개발이야기
[TIL]27.타입스크립트 Type Predicate
무서운승태
2023. 11. 21. 21:12
728x90
타입스크립에서 Type Predicate라는 개념이 있다. 다음과 같은 함수가 있다고 하자.
// 왜 이렇게 사용하면 안될까??
function isNumberBool(input: any): boolean {
return typeof input === "number";
}
isNumberBool 함수의 리턴값을 boolean으로 선언하였다. 그냥 보면 문제가 없어보인다. 그러나 사용하면 조금 불편한 점이 생긴다.
let num: any = 5;
if (isNumberBool(num)) {
num; // type이 any임
}
num에 대한 체크후 num을 number로 사용하려고 할때 문제가 생긴다 any타입으로 되어서 또 casting이 필요하다.
function isNumber(input: any): input is number {
return typeof input === "number";
}
let num: any = 5;
if (isNumber(num)) {
num;
// predicate를 사용해주면 안에서 number로 바뀜
// 정확한 타입을 유추할수있다!!
// 일반적으로 하면 유추하기 힘들다.
}