
개발을 하다보면 조건문으로 null과 undefined 값이 들어오면 어떻게 해주세요 라는 식으로 대처할 일이 빈번하다.
&& 기호로 비교할 때 true와 false 값을 넣는게 아니라 자료형을 넣으면
&&사이에 처음으로 등장하는falsy값을 찾아주고 그게 없다면 마지막 값을 남겨준다.fasly란 null, undefined, NaN 같은 값들을 의미한다.1 || 2 -> 1 반환 0 || 2 -> 2 반환 1 && 2 -> 2 반환 0 && 2 -> 0 반환 1 && null && 2 -> null 반환 undefined && 'hello' && 'world' -> undefined 반환
function result(word : string | undefined){
if(word && typeof word === 'string'){
console.log(word)
}
}
위 코드로 보자면 word가 undefined 값이라면 조건문이 false가 되어 실행되지 않는다.
in으로 Object 자료형을 Narrowing 할 수 있다.(키값 in object자료이름) 이 속성을 가지고 있냐~type Bird = { flying: string };
type Tiger = { work: string };
function 함수(animal: Bird | Tiger) {
if ("flying" in animal) {
return animal.flying
}
return animal.work
}
literal type을 사용하자!literal type으로 유니크한 속성을 만들어놔도 된다!!type Bird = {
leg: "2개";
name: string;
};
type Tiger = {
leg: "4개";
name: string;
};
function result(animal: Bird | Tiger) {
if (animal.leg === "2개") {
console.log("이것은 Bird");
} else {
console.log("이것은 Tiger");
}
}
instanceof를 사용하여 부모 클래스가 뭔지 검사할 수 있다.instanceof를 통해 이 클래스에서 온 것인지 아님 다른 클래스에서 온 것인지 구분할 수 있기 때문에 Narrowing 처리 가능하다.const day = new Date();
if (day instanceof Date){
console.log('Date 클래스 안에 day가 있습니다.')
}