Narrowing
padLeft라는 함수가 있다고 생각해보자.
function padLeft(padding: number | string, input: string) {
if (typeof padding === "number") {
return " ".repeat(padding) + input;
}
return padding + input;
}
만약 위 함수에서 padding이 number라면, input 앞에 padding 횟수만큼 공백이 띄워지지만, padding이 string이라면, input 앞에 padding이 붙여져야한다.
그렇게 되면, 타입스크립트에서는 padding을 number나 string을 받을 때 우리가 padding이라는 값을 number나 string으로 Narrowing해줘야한다.