타입스크립트에서 함수는 크게 3가지 타입으로 정의할 수 있다.
function sum(a: number, b: number): number {
return a + b;
}
위 선언된 함수는 매개변수
와 반환 값
에 대한 타입을 정의한 것 이다.
함수의 반환 값에 타입을 정하지 않을 때는
void
를 사용한다.
타입스크립트에서는 함수의 인자를 모두 필수 값으로 간주하기에 함수의 매개변수를 설정하면 undefined
나 null
이라도 인자로 넘겨야한다.
컴파일러에서는 정의된 매개변수 값이 넘어 왔는지 확인하며, 정의된 매개변수 갯수 만큼 인자를 받을 수 있다.
function sum(a: number, b: number): number {
return a + b;
}
sum(10, 20); // 30
sum(10, 20, 30); // error, too many parameters
sum(10); // error, too few parameters
자바스크립트와 다르게 정의되지 않은 매개변수의 갯수 만큼 인자를 넘기지 않기에, 이러한 특성을 살리고자 한다면 ?
를 사용하여 정의할 수 있다.
function sum(a: number, b?: number): nunmber {
return a + b;
}
sum(10, 20); // 10
sum(10, 20, 30); // error, too many parameters
sum(10); // 10
function sum(a: number, ...nums: number[]): number {
const totalNums = nums.reduce((total, cur) => { return total + cur; }, 0);
return a + totalNums;
}