function isString(a:unknown):boolean{
return typeof a === 'string';
}
function parseInput(input:string|number){
let string:string;
if(isString(input)){
// string = input.toUpperCase(); error!
}
}
위 코드는 에러가 발생한다. isString이 boolean을 준다는 것을 parseInput 함수는 알 지 못한다.
isString 함수 내에서만 작동하는 것이다. 따라서 isString 함수는 boolean을 반환하는 것을 알려주지만 typeguard로써의 역할을 완벽하게 해내지 못했다!
function isString(a:unknown):a is string{
return typeof a === 'string';
}
function parseInput(input:string|number){
let string:string;
if(isString(input)){
string = input.toUpperCase();
}
}
is는 매개변수 타입을 정제하고 boolean을 반환하는 함수에 사용자 정의 타입 안전장치를 이용 함수가 해당 타입을 반환한다고 보장 하도록 할 수 있다.