한 입 크기로 잘라먹는 타입스크립트 - 사용자 정의 타입 가드
1. 사용자 정의 타입 가드
- chapter4.ts
/**
* 사용자 정의 타입 가드
*/
type Dog = {
name: string;
isBark: boolean;
};
type Cat = {
name: string;
isScratch: boolean;
};
type Animal = Dog | Cat;
// 사용자 정의 타입 가드
// 타입스크립트 직접 만든 함수의 반환값으로 타입을 잘 좁혀주지 않는다.
// 따라서 함수 자체를 타입 가드 역할을 하도록 만든다.
// 함수 반환값이 true 면, 인수로 전달한 animal 값이 Dog 타입으로 인지.
function isDog(animal: Animal): animal is Dog {
// 타입 단언 후 검사
return (animal as Dog).isBark !== undefined; // animal 타입이 좁혀지지 않으니 타입 단언 사용
}
function isCat(animal: Animal): animal is Cat {
return (animal as Cat).isScratch !== undefined;
}
function warning(animal: Animal) {
// if ('isBark' in animal) {
if (isDog(animal)) {
// 강아지
animal; // Dog 타입으로 좁힘
// } else if ('isScratch' in animal) {
} else if (isCat(animal)) {
// 고양이
animal; // Cat 타입으로 좁힘
}
}
한 입 크기로 잘라먹는 타입스크립트(TypeScript) 강의 | 이정환 Winterlood - 인프런
이정환 Winterlood | 문법을 넘어 동작 원리와 개념 이해까지 배워도 배워도 헷갈리는 타입스크립트 이제 제대로 배워보세요! 여러분을 타입스크립트 마법사🧙🏻♀️로 만들어드립니다., 프론
www.inflearn.com
'강의 실습 > 한 입 크기로 잘라먹는 타입스크립트(TypeScript)' 카테고리의 다른 글
인터페이스 확장하기 (2) | 2024.11.12 |
---|---|
인터페이스 (1) | 2024.11.11 |
함수 오버로딩 (0) | 2024.11.03 |
함수 타입의 호환성 (0) | 2024.11.02 |
함수 타입 표현식과 호출 시그니쳐 (1) | 2024.11.01 |
댓글