Backend/TypeScript

[TypeScript] 함수 시그니처 타입으로 선언하기

누구세연 2023. 12. 22. 18:18

함수를 타입으로 정의하는 방법에 대해 알아보겠습니다.

 

Function Type

type Mapper = (x: string) => string;

 

Mapper는 문자열을 받아 다른 문자열을 반환하는 함수 타입을 정의합니다.

예를 들어, (x: string) => string는 문자열을 받아 "멤버: 문자열" 형태의 새로운 문자열을 반환하는 함수를 의미합니다.

const runner = (callback: Mapper) => {
    return ['잘자세연', '누구세연', '안녕하세연'].map(callback);
}
console.log(runner((x) => `멤버 : ${x}`));

runner 함수는 Mapper 타입의 콜백 함수를 인자로 받아, 문자열 배열에 각 요소에 대해 콜백 함수를 적용한 결과를 반환합니다.

예시에서는 Mapper 타입의 콜백으로 문자열을 받아 "멤버: 문자열" 형태로 변환하는 함수를 전달하고 있습니다.

 

type MultiplyTwoNumbers = (x: number, y: number) => number;

MultiplyTwoNumbers는 두 개의 숫자를 받아 숫자를 반환하는 함수 타입을 정의합니다.

const multiplyTwoNumbers: MultiplyTwoNumbers = (x, y) => {
    return x + y;
}

위에서 정의한 MultiplyTwoNumbers 타입의 함수를 구현한 예시로, 받은 두 숫자를 더한 값을 반환합니다.

 

Interface로 함수 선언

interface IMultiplyTwoNumbers {
    (x: number, y: number): number;
}

IMultiplyTwoNumbers는 함수 타입을 나타내는 인터페이스로 두 개의 숫자를 받아 숫자를 반환하는 함수를 정의합니다.

const multiplyTwoNumbers3: IMultiplyTwoNumbers = (x, y) => {
    return x * y;
}

IMultiplyTwoNumbers 인터페이스를 구현한 예시로 받은 두 숫자를 곱한 값을 반환합니다.

 

 

TypeScript에서 함수 타입은 매개변수와 반환 타입을 정의하는 방식으로 사용됩니다.

인터페이스를 사용하여 함수 타입을 정의할 수 있으며, 이를 통해 함수의 모양을 명시적으로 나타낼 수 있습니다.

함수를 선언하고 타입을 명시함으로써 코드의 가독성을 높이고, 잘못된 사용을 방지할 수 있습니다.