Skip to main content

함수 타입

함수 매개변수

function sing(song: string) {
console.log('Singing: ${song}');
}
  • 명시적 타입 정보가 선언되지 않으면 절대 타입을 알 수 없으며 any로 간주한다.

필수 매개변수

function singTwo(first: string, second: string) {
console.log('${first} / ${second}');
}

singTwo('Ball', 'Chain'); // ok
singTwo('Ball'); // error
singTwo('Ball', 10); // error
singTwo('Ball', 'Chain', 'Dream'); // error
  • 타입이 맞지 않으면 타입 오류가 발생한다.
  • 파라미터가 적거나 더 많으면 에러를 발생한다.

선택적 매개변수

function announceSong(song: string, singer?: string) {
console.log(`Song: ${song}`);

if (singer) {
console.log('Singer: ${singer}');
}
}

announceSong('whatever'); // ok
announceSong('whatever', 'Oasis'); // ok
  • singer 파라미터는 ? 을 통해 필수가 아닌 선택 사항으로 변한다.
  • singer는 string이나 undefined일 수 있다.

기본 매개변수

function rateSong(song: string, rating?: number = 0) {}
  • 자바스크립트와 같이 선택적 매개변수를 선언할 때 기본값을 설정할 수 있다.
  • 암묵적으로 함수 내부에 | 유니언 타입이 추가 된다.

나머지 매개변수

function singAllTheSongs(singer: string, ...songs: string[]) {
for (const song of songs) {
console.log(`${song}, by ${singer}`);
}
}
  • 스프레드 연산자를 통해 임의의 수를 호출 가능하다.

명시적 반환 타입

function singSongRecursive(songs: string[], count = 0): number {}
  • 파라미터가 닫히는 부분의 뒤에 반환되는 타입을 명시할 수 있다.
info

함수에서 반환 타입을 명시적으로 선언하면 좋은 이유

  1. 가능한 반환값이 많은 함수가 항상 동일한 타입의 값을 반환하도록 강제한다.
  2. 타입스크립트는 재귀 함수의 반환 타입을 통해 타입을 유추하는 것을 거부한다.
  3. 매우 큰 프로젝트에서 타입스크립트 타입 검사 속도를 높일 수 있다.