[typescript] 화살표 함수와 익명 함수의 함수 오버로딩 처리 방식 비교

함수 오버로딩은 TypeScript에서 동일한 함수명을 가지고 다른 매개변수로 여러 번 정의하는 것을 의미합니다. 화살표 함수와 익명 함수의 경우, 함수 오버로딩에 대한 처리 방식에는 차이가 있습니다.

화살표 함수의 함수 오버로딩 처리

const myFunc: {
  (x: number): number;
  (x: string): string;
} = (x: any): any => {
  if (typeof x === 'number') {
    return x * 2;
  } else if (typeof x === 'string') {
    return `Hello, ${x}!`;
  }
};

위의 예제에서 myFunc는 매개변수로 숫자와 문자열을 각각 받아들이는 함수 오버로딩이 적용된 화살표 함수입니다. 이러한 방식은 오버로딩 정의를 객체 형태로 표현하고, 함수 표현식을 사용하여 구현됩니다.

익명 함수의 함수 오버로딩 처리

let myFunc: {
  (x: number): number;
  (x: string): string;
};

myFunc = function (x: any): any {
  if (typeof x === 'number') {
    return x * 2;
  } else if (typeof x === 'string') {
    return `Hello, ${x}!`;
  }
};

위의 예제에서 myFunc는 화살표 함수의 예제와 동일한 함수 오버로딩이 적용된 익명 함수입니다. 익명 함수에서는 오버로딩 정의를 변수 선언 형태로 표현하고, 함수 선언식을 사용하여 구현됩니다.

결론

화살표 함수와 익명 함수는 각각 함수 오버로딩을 지원합니다. 화살표 함수의 경우 오버로딩 정의를 객체 형태로 표현하고 함수 표현식을 사용하여 구현하며, 익명 함수의 경우 오버로딩 정의를 변수 선언 형태로 표현하고 함수 선언식을 사용하여 구현합니다.

이러한 차이점을 이해하고 적합한 상황에 맞게 활용하는 것이 TypeScript 코드의 가독성과 유지보수성을 높일 수 있는데 중요한 요소입니다.

참고 문헌: <링크>