설명
타입 가드(type guard)
타입 체커에게 파라미터의 타입을 좁힐 수 있다고 알려주는데 사용
예시
interface Car {
name: string,
engine: string,
}
interface Bicycle {
name: string,
frame: string,
}
type Vehicle = Car | Bicycle;
const vehicle: Vehicle = {
name: 'good bike',
frame: 'normal',
}
파라미터의 타입이 Bicycle인지 체크하는 checkBicycle이라는 메소드를 생성하여 사용 타입이 Bicycle이면 true를 반환 하지만 에러 발생
const checkBicycle = (vehicle: Vehicle): boolean => {
return 'frame' in vehicle;
}
const upgradeBicycleFrame = (vehicle: Vehicle): void => {
if (checkBicycle(vehicle)) {
// Property 'frame' does not exist on type 'Vehicle'.
// Property 'frame' does not exist on type 'Car'.
vehicle.frame = 'good';
}
}
타입가드를 사용하여 타입을 좁히고 타입체커에게 파라미터의 타입을 알려줌
const checkBicycle = (vehicle: Vehicle): vehicle is Bicycle => {
return 'frame' in vehicle;
}
const upgradeBicycleFrame = (vehicle: Vehicle): void => {
if (checkBicycle(vehicle)) {
vehicle.frame = 'good';
}
}