let num = 10;
num = "string"; //타입스크립트가 num은 number타입이라고 추론하기 때문에 스트링 할당하려면 에러남.
추론하는 경우: 초기화된 변수, 기본값이 있는 매개변수, 반환 값이 있는 함수.
function someFunc(val: string | number, isNumber: boolean) {
if (isNumber) {
val.toFixed(2);
}
}//val의 타입이 string일지 number일지 모르기 때문에 toFixed를 쓸 수 없어 에러가 난다.
function someFunc(val: string | number, isNumber: boolean) {
// some logics
if (isNumber) {
(val as number).toFixed(2);
// 1. 변수 as 타입
// Or
// 2. <타입>변수
// (<number>val).toFixed(2);
}
}
cf) x!.toFixed(2) -> x가 null이나 undefined가 아닐때 tofixed
function test (a: string | number): a is number {}
//test함수가 a를 number타입으로 지정
typeof val === 'number'; // val의 타입을 number로 직접 지정
if('toFixed' in val) //tofixed가 val에 쓰일때 val은 number