Narrowing & Assertion
string | number
같은 union type을 조작할 때,
function 내함수(x :number | string){
return x + 1
}
Type Narrowing
- 조건문 등으로 타입에 따른 조건을 명시.
- 타입이 불확실할 때의 부작용 최소화 장치.
- Defensive coding(방어적인 코딩).
function 내함수(x: number | string) {
if (typeof x === 'number') {
return x + 1;
} else if (typeof x === 'string') {
return x + 1;
} else {
return 0;
}
}
console.log(내함수(10));
console.log(내함수('10'));
- 조건문에서
else
문이 없을 때, 간혹 에러가 나기도 함. (엄격하게 쓰길 권장)
Type Assertion
- '이 변수의 타입을
number
로 생각해 주세요.'
변수명 as number
등으로 지정.
function 내함수2(x: number | string) {
return (x as number) + 1;
}
console.log(내함수2(10));
console.log(내함수2('10'));
- 사실, 타입 해제에 가까움.
- 권장하지 않음.
- 디버깅용 사용을 추천.