function 내로윙함수1(a: string | undefined) {
if (a && typeof a === "string") {
// 1. && 연산자로 null & undefined 타입체크하기
}
}
type Fish = { swim: string };
type Bird = { fly: string };
function 내로윙함수2(animal: Fish | Bird) {
if ("swim" in animal) {
// in 키워드로 object narrowing 가능. 속성명 in 오브젝트자료
animal.swim;
}
}
// 오브젝트 instanceof 부모class
let 날짜 = new Date();
if (날짜 instanceof Date) {
}
type Car1 = {
wheel: "4개";
color: string;
};
type Bike1 = {
wheel: "2개";
color: string;
};
function 내로윙함수3(x: Car1 | Bike1) {
//비슷한 object 일 경우, literal type을 강제로 만들어두면 나중에 도움이 됨.
// 고정된 값 하나.
//논리적으로 이 타입인지 특정지을 수 있다면, narrowing 인정해줌
if (x.wheel === "4개") {
console.log("x는 Car타입이에요.");
}
}