TypeScript

[TypeScript] 함수 정의하기

누구세연 2023. 12. 16. 20:24

TypeScript의 함수에 대해 알아보겠습니다.

 

함수 정의하기

function returnTwoCouples(person1: string, person2: string): string {
    return `${person1}과 ${person2}은 닉네임 입니다.`
}

console.log(returnTwoCouples('잘자세연', '누구세연'));
// 잘자세연과 누구세연은 닉네임 입니다.

위의 예시는 TypeScript에서 함수를 정의하는 기본적인 형태입니다.

  1. 함수 이름과 파라미터 타입 명시
    - function 키워드를 사용하여 함수를 선언합니다.
    - 함수 이름을 정의하고 괄호 안에 파라미터와 각 파라미터의 타입을 명시합니다.
    (파라미터 타입은 콜론(:) 다음에 명시!)
  2. 리턴 타입 명시
    - 콜론(:) 다음에 리턴 타입을 명시합니다. 위의 예제에서는 string 형태로 명시했습니다.
    - 만약 함수가 아무것도 리턴하지 않을 경우에는 void 타입을 사용할 수 있습니다.

 

만약 다른 타입의 파라미터를 입력해 준다면

예상한 타입과 다른 타입을 사용했을 때 나타나는 타입 불일치 오류가 나타나는 것을 확인할 수 있습니다.

 

그리고 선언해준 파라미터의 개수와 다르게 파라미터 개수를 넣어준다면

해당 함수가 받아들이는 인자의 개수와 전달된 인자의 개수가 일치하지 않을 때 발생하는 오류가 나타나는 것을 확인할 수 있습니다.

 

이처럼 함수를 정의할 때 기대하는 파라미터의 개수와 타입을 확인하고, 이를 기준으로 함수를 호출할 때 전달되는 인자의 개수와 타입을 맞추어야 합니다.

 

Optional Parameter

function mulitplyOrReturn(x: number, y?: number) {
    if (y) {
        return x * y;
    } else {
        return x;
    }
}

console.log(mulitplyOrReturn(10, 20));   //200
console.log(mulitplyOrReturn(10));       //10
  • multiplyOrReturn 파라미터에 ?를 사용하여 선택적 파라미터로 만들 수 있습니다.
  • 선택적 파라미터는 함수를 호출할 때 전달되거나 전달되지 않을 수 있습니다.

 

Default Parameter

function multiplyOrReturn2(x: number, y: number = 20) {
    return x * y;
}

console.log(multiplyOrReturn2(10));      //200
console.log(multiplyOrReturn2(10, 30));  //300

 

  • multiplyOrReturn2 파라미터에 기본 값을 만들 수 있습니다.
  • 기본 파라미터는 파라미터에 기본 값을 설정하여 호출 시 값이 제공되지 않으면 기본 값이 사용됩니다.

 

나머지 매개변수

function getInfiniteParameters(...args: string[]) {
    return args.map((x) => `너무좋아 ${x}`);
}

console.log(getInfiniteParameters('누구세연', '잘자세연', '어디세연'))
  • ... 를 사용하여 나머지 매개변수를 나타냅니다. 나머지 매개변수는 배열 형태로 전달됩니다.

 

특수 반환 타입

function doNotReturn(): void {
    console.log('저는 반환을 하지 않습니다.');
}
  •  void 타입
    - void 타입은 함수가 아무런 값을 반환하지 않음을 나타냅니다.
    - 예를 들어, doNotReturn 함수는 반환 타입으로 void를 사용하고 있습니다.
     이 함수는 값을 반환하지 않고 단순히 콘솔에 메시지를 출력하는 역할을 합니다.

 

function neverEndingLoop(): never {
    while (true) {
        // 무한 루프
    }
}
function throwErro2(): never {
    throw Error();
}
  • never 타입
    - never 타입은 함수가 절대로 종료되지 않거나 항상 예외 던지는 경우에 사용됩니다.
    - neverEndingLoop 함수는 무한 루프를 포함하고 있으며, 이는 결코 종료되지 않습니다.
     이러한 함수는 never를 반환합니다.
    - throwError 함수는 항상 예외를 던지기 때문에 반환 타입으로 never를 사용합니다.
    - never는 다른 타입들과 호환성이 없는 특수한 타입입니다. 함수가 항상 예외를 던지거나 무한 루프를 가지면, 이 함수 반환 타입은 never로 지정하는 것이 타입 시스템에 더 많은 정보를 제공합니다.

 

 

이러한 방법들을 조합하여 다양한 유형의 함수를 정의할 수 있습니다.

함수는 TypeScript에서 강력한 타입을 제공하여 코드의 안정성 높일 수 있도록 도와줍니다.

'TypeScript' 카테고리의 다른 글

[TypeScript] Overloading 오버로딩  (0) 2023.12.30
[TypeScript] 함수 시그니처 타입으로 선언하기  (0) 2023.12.22
[TypeScript] Narrowing(내로잉)  (1) 2023.11.27
[TypeScript] Intersection  (2) 2023.11.10
[TypeScript] Union  (0) 2023.11.08