두 가지 이상의 타입을 결합한 상태에서 조건분기를 할 때 일반적으로 서로소 유니온 타입을 사용한다. 하지만 서로소 유니온 타입을 사용할 수 없는 환경도 존재하는데 이럴 때 타입 가드를 사용한다.
아래 두 개의 타입을 보자.
강아지 타입과 고양이 타입을 선언해주었다. 이렇게 우리가 타입을 정의하는 경우에는 서로소 유니온 타입으로 타입 좁히기를 진행했다.
하지만, 내장되어 있는 클래스라던가 인터페이스라면 우리가 직접 커스텀을 할 수 없기에 서로소 유니온 타입으로 설정하는 것이 불가능하다.
서로소 유니온 타입 정의가 안된다면 조건 분기가 다음과 같이 이뤄져야 한다.
보시다시피 직관성이 사라졌다. 이런 코드에 경우에 각 조건분기에서 어떤 타입인지 주석을 달아 표기해줘야 한다.
또한, 만약 Dog 타입의 isBark가 이름이 변경될 경우 아래 조건분기도 변경해야 하는 불편함이 있다.
이를 방지하기 위해 타입 가드를 만들어 방지할 수 있다.
새로 만든 isDog(), isCat() 함수로 animal을 각각 Dog과 Cat 타입으로 단언하여 각 프로퍼티가 있는지 확인해서 타입 좁히기를 진행했다. 그러나 타입이 제대로 좁혀지지 않았다. 바로 반환 타입이 설정되지 않았기 때문이다.
따라서, 다음과 같이 코드를 작성해줘야 타입 가드 역할이 제대로 동작한다.
참고자료
한 입 크기로 잘라먹는 타입스크립트(TypeScript)
한 입 크기로 잘라먹는 타입스크립트(TypeScript) 강의 | 이정환 Winterlood - 인프런
이정환 Winterlood | 문법을 넘어 동작 원리와 개념 이해까지 배워도 배워도 헷갈리는 타입스크립트 이제 제대로 배워보세요! 여러분을 타입스크립트 마법사🧙🏻♀️로 만들어드립니다., 프론
www.inflearn.com
'언어 > TypeScript' 카테고리의 다른 글
클래스 (0) | 2024.08.29 |
---|---|
인터페이스 (0) | 2024.08.25 |
함수 타입의 호환성과 오버로드 (0) | 2024.08.23 |
TypeScript 환경 설정 (2) | 2024.08.22 |
함수 타입 (0) | 2024.08.22 |