[TS] 함수의 타입 정의

TIL

함수 타입 정의

함수의 타입은 매개 변수와 반환값의 타입으로 결정된다.

기본 함수 타입

function func(a: number, b: number): number {
  return a + b;
}

매개변수 a와 b는 number타입이고, 반환값도 number타입이다.

 

함수의 반환값 타입은 자동으로 추론되기 때문에 다음과 같이 생략해도 된다.

function func(a: number, b: number){
  return a + b;
}

 

 

화살표 함수 타입

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

 

매개변수 타입 정의

매개변수 기본값 설정

함수의 매개변수에 기본값이 설정되어 있으면 타입이 자동으로 추론되며, 이 경우 타입 정의를 생략해도 된다.

function introduce(name = "woodstock") {
  console.log(`name : ${name}`);
}

 

 

선택적 매개변수 설정

매개변수 이름뒤에 ?를 붙여주면 선택적 매개변수가 되어 생략이 가능하다.

function introduce(name = "woodstock", mbti?: "ESTJ") {
  console.log(`name : ${name}`);
  console.log(`MBTI : ${mbti}`);
}

introduce("woodstock", "ESTJ");
introduce("woodstock");

 

 

선택적 매개변수는 타입 | undefined 형태가 된다.

따라서 해당 값을 사용하기 전에는 타입을 좁혀야 한다.

function introduce(name = "woodstock", mbti?: "ESTJ", hp?: number) {
  console.log(`name : ${name}`);
  console.log(`MBTI : ${mbti}`);
  if (typeof hp === "number") {
    console.log(`HP : ${hp + 30}`);
  }
}

 

 

또한, 선택적 매개변수는 반드시 필수 매개변수의 뒤에 위치해야 한다.

 

나머지 매개변수

...rest를 사용하면 가변 개수의 인수를 배열로 받을 수 있다.

function getSum(...rest) {
  let sum = 0;
  rest.forEach((it) => (sum += it));
  return sum;
}

 

나머지 매개변수는 배열 타입으로 정의한다. ...rest: number[]는 number 타입의 요소를 가진 배열을 의미한다.

function getSum(...rest: number[]){
  let sum = 0;
  rest.forEAch((it) => (sum += it));
}

 

만약, 나머지 매개변수의 길이를 고정하고 싶다면 튜플 타입을 이용하면 된다.

function getSum(...rest: [number, number, number]) {
  let sum = 0;
  rest.forEach((it) => (sum += it));
  return sum;
}

위 코드처럼 튜플 타입을 사용하면 나머지 매개변수의 개수를 정확히 3개로 제한할 수 있다.


이렇게 5개의 인수를 전달하면 오류가 발생한다.

'TIL' 카테고리의 다른 글

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

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
고견
[TS] 함수의 타입 정의
상단으로

티스토리툴바