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

TIL

함수 타입 표현식

타입별칭을 이용해 함수의 타입을 별도로 정의하는 문법을 함수 타입 표현식이라고 한다.

 

[TS] 타입 별칭과 인덱스 시그니처

타입 별칭 (Type Alias)타입 별칭을 이용하면 다음과 같이 변수를 선언하듯 타입을 별도로 정의할 수 있다.type User = { id: number; name: string; nickname: string; mbti: string;}let user1: User = { id: 1, name: "유재석", n

devmark.tistory.com

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

const add: Add = (a, b) => a + b;

Operation 타입을 정의하고, 이를 add 함수의 타입으로 지정했다. add 함수의 매개변수 타입을 Operation에서 이미 정의되었으므로 생략 가능하다.

이렇게 같은 타입의 함수를 여러 개 만들 때 타입 별칭을 사용하면 코드 중복을 줄일 수 있다.

 

다만, 함수 타입 표현식이 타입 별칭과 함께 사용되어야 하는 것은 아니다. 아래와 같이 사용해도 문제 없다.

const add: (a: number, b: number) => number = (a, b) => a + b;

하지만 타입이 길어지면 가독성이 떨어지므로, 타입 별칭을 사용하는 것이 권장된다.

 

호출 시그니처

호출 시그니처(Call Signature)는 함수 타입 표현식과 동일하게 함수의 타입을 별도로 정의하는 방식이다.

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;

함수 타입 표현식과 다른 점은 객체 형태로 정의하고, => 대신 :을 사용한다.

자바스크립트에서는 함수도 객체이기 때문에 위 코드처럼 객체를 정의하듯 함수의 타입을 별도로 정의할 수 있다.

 

호출 시그니처의 장점은 함수 타입에 프로퍼티를 추가로 정의할 수 있다는 점이다.

이렇게 정의하면 add2함수는 호출 가능하면서 동시에 name 프로퍼티를 가진 객체가 된다.
이는 함수이자 일반 객체를 의미하는 타입으로 정의되며 하이브리드 타입이라고 부른다.

'TIL' 카테고리의 다른 글

[TS] 함수 타입 정의 및 호출 시그니처 연습  (0) 2025.11.01
[TS] 함수 타입의 호환성  (0) 2025.11.01
[TS] 함수의 타입 정의  (0) 2025.11.01
[TS] 타입 단언 및 서로소 유니온 사용 연습  (0) 2025.11.01
[TS] 서로소 유니온 타입  (0) 2025.11.01
'TIL' 카테고리의 다른 글
  • [TS] 함수 타입 정의 및 호출 시그니처 연습
  • [TS] 함수 타입의 호환성
  • [TS] 함수의 타입 정의
  • [TS] 타입 단언 및 서로소 유니온 사용 연습
고견
고견
개발 자국 남기기
  • 고견
    개발자국
    고견
  • 전체
    오늘
    어제
    • 분류 전체보기 (157)
      • Frontend (29)
        • Next.js (16)
        • JavaScript (7)
      • CS (19)
        • 자료구조 (9)
        • 알고리즘 (5)
        • 운영체제 (4)
        • 네트워크 (1)
      • TIL (93)
      • Dev Log (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    클래스
    Spa
    Trouble Shooting
    배열
    자료구조
    문자열
    algorithm
    App Router
    react
    제네릭
    Next.js
    타입 좁히기
    바닐라 자바스크립트
    페이지 라우터
    generic
    Pages Router
    typescript
    cs50
    C
    memory
    앱 라우터
    emotion diary
    함수 타입
    javascript
    useState
    CS
    알고리즘
    인터페이스
    ai 감성 일기장
    트러블 슈팅
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
고견
[TS] 함수 타입 표현식과 호출 시그니처
상단으로

티스토리툴바