typeof
property in 오브젝트 자료
instanceof(object)
현재 변수의타입이 무엇인지 특정지을 수 있다면 인정을 해준다.
function func(x :number|string){
//type이 아직 하나로 확정되지 않았을 경우 Type Narrowing을 써야 한다.
// Narrowing은 if문을 붙여서 사용할 수 있다.
let array:number[] = [];
if(typeof x === 'number'){
array[0] = x;
}else{}
}
function func2(x :number|string){
//type이 아직 하나로 확정되지 않았을 경우 Type Narrowing을 써야 한다.
// Narrowing은 if문을 붙여서 사용할 수 있다.
if(typeof x === 'string'){
return x + 1;
}else{
return x + 1;
}
}
assertion 문법 : target as type으로 작성한다 (type overwrite)
Narrowing. Union type 같은 복잡한 타입을 하나의 타입으로 줄이는 역할.
어떤 타입이 들어오는지 100% 확신할 때 쓴다.잘 안쓰인다.(버그 추적을 못함.)
실무에서 쓰이는 주 용도 -
1.다른사람의 코드 수정할 때
2.왜 타입에러가 나는지 모를 때 (디버깅)
중요한 점 : asssertion은 실제로 타입을 바꿔주지는 않는다.
function func3(x: number|string){
let array : number[] = [];
array[0] = x as number; // 실제로 x가 number로 바뀌는 것은 아니다.
}
type Person ={
name : string;
}
function convertType<T>(data: string): T{
return JSON.parse(data) as T;
}
const jsondata = convertType<Person>('{"name":"kim"}')
convertType 함수로 자료를 입력하면 as 키워드로 타입을 하나 붙여주게 만들었다.