들어올 파라미터와 반환할 결과값 각각의 타입을 지정해 준다.
예를 들어 JS문법으로 작성한 아래와 같은 덧셈 함수는
function add(a, b) {
return a + b;
}
다음처럼 TS문법으로 나타낼 수 있다.
function add(a: number, b: number): number {
return a + b;
}
전달해도 되고, 하지 않아도 되는 파라미터는 매개변수명 뒤에 물음표(?
)를 붙이고 타입을 지정해 준다.
function sayHi(greeting: string, name?: string): string {
return `${greeting}, ${name}!`;
}
console.log(sayHi('Hello', 'Doeun')); //Hello, Doeun!
console.log(sayHi('Hi')); //Hi, undefined!
하지만 위에서 볼 수 있듯이 인자가 들어오지 않은 매개변수는 undefined로 전달되니 주의..!
인자가 들어오지 않았을 때, undefined가 아닌 특정 값을 디폴트로 전달하고 싶다면 타입 뒤에 = (default value)
를 추가해 준다.
function sayHi(greeting: string, name: string = 'friend'): string {
return `${greeting}, ${name}!`;
}
console.log(sayHi('Wassup')); //Wassup, friend!
function add(a: number, b: number = 1000): number {
return a + b;
}
console.log(add(1)); //1001
인자의 갯수가 정해지지 않은 함수의 경우, spread 연산자(...
) 이용해 파라미터를 설정하고 type을 Array로 지정한다. (데이터들은 동일한 타입이어야 함!)
function addAll(...nums: number[]) {
return nums.reduce((a, b) => a + b);
}
console.log(addAll(1, 2, 3)) //6
console.log(addAll(1, 10, 100)) //111