[TypeScript] 함수 타입 표현식과 호출 시그니처

ttining·2025년 3월 31일

함수 타입 표현식

함수 타입 표현식 사용 ❌

const add = (a: number, b: number): number => a + b;
  • 이 방식은 함수의 타입을 명시적으로 정의하지 않고, 함수 표현식을 그대로 사용한다.
  • 그러나 복잡한 함수나 여러 함수에서 동일한 타입을 재사용할 때는 불편할 수 있다.

함수 타입 표현식 사용 ⭕

type Add = (a: number, b: number) => number;

const add: Add = (a, b) => a + b;
  • 타입 별칭을 사용하여 함수의 타입을 정의할 수 있다.
  • 이를 통해 동일한 형태의 함수를 여러 번 사용할 수 있게 된다.

type Operation = (a: number, b: number) => number;

const add: Operation = (a, b) => a + b;
const sub: Operation = (a, b) => a - b;
const multiply: Operation = (a, b) => a * b;
const divide: Operation = (a, b) => a / b;
  • 사칙연산 함수와 같이 유사한 형식의 함수를 여러 개 만들어야 할 때,
    함수 타입 표현식을 사용하면 코드가 간결해지고 재사용성이 높아진다.

const add: (a: number, b: number) => number = (a, b) => a + b;
const sub: (a: number, b: number) => number = (a, b) => a - b;
const multiply: (a: number, b: number) => number = (a, b) => a * b;
const divide: (a: number, b: number) => number = (a, b) => a / b;
  • 타입 별칭 없이 함수 표현식만을 사용해 타입을 정의할 수 있다.
  • 이 방법은 간단한 경우에 유용하지만, 코드 재사용이 필요한 경우 타입 별칭을 사용하는 것이 더 효과적이다.


호출 시그니처 (콜 시그니처)

type Operation2 = {
  (a: number, b: number): number;
};

const add2: Operation2 = (a, b) => a + b;
const sub2: Operation2 = (a, b) => a - b;
const multiply2: Operation2 = (a, b) => a * b;
const divide2: Operation2 = (a, b) => a / b;
  • 호출 시그니처는 타입 별칭을 객체 형태로 정의하는 방식이다.
    • 이때, 함수는 객체의 프로퍼티처럼 정의된다.
    • 이 방법은 객체 형태로 함수 타입을 정의하고, 호출 시 그 타입을 지정하는 데 유용하다.
  • 호출 시그니처는 여러 개의 함수 타입을 객체 안에 묶을 때 사용될 수 있다.
    • 예를 들어, 여러 함수들이 동일한 타입을 공유하는 경우, Operation2와 같이 하나의 타입으로 묶어 관리할 수 있다.
profile
내가 보려고 만든 벨로그 *'-'*

0개의 댓글