3장 타입 추론
아이템 24 | 일관성 있는 별칭 사용하기
3줄 요약
1. 일관성 있는 변수 식별자 사용하기.
2. 새로운 변수 별칭보다는 객체 비구조화 고려하기.
3.
참고) 이펙티브 타입스크립트는 타입스크립트의 기본 그 이상을 다룹니다.
이번 아이템에서 이야기하고 하는 바는 식별자를 일관성 있게 사용하자입니다.
타입스크립트에서 이렇게 식별자를 일관성 없이 사용하는 것을 지양하는 이유는 타입 좁히기와 관련이 있습니다.
Point라는 타입에 z 라는 속성이 optinoal 이라고 가정하겠습니다.
이때 별칭을 일관성 없이 사용하면 아래와 같이 에러가 발생합니다.
타입스크립트 컴파일러가 에러를 내뿜습니다.
에러의 내용은 아래와 같습니다.
zPo의 타입은 여전히 undefined 타입과 number 타입의 유니온 타입입니다.
그렇다면 point.z의 타입은 좁혀졌을까요?
point.z 변수는 zPo의 변수와는 다르게 타입이 number 타입으로 좁혀짐을 확인할 수 있습니다.
이 예시를 통해서 알 수 있듯이 변수 식별자를 일관성 있게 사용하는 것이 중요합니다.
그리고 이러한 상황이 있을 때는 객체 비구조화를 이용하면 일관성 있게 변수를 사용할 수 있습니다.
Materials From
1. <이펙티브 타입스크립트>(댄 밴더캄 지음, 장원호 옮김, 인사이트 2021)
2. 타입스크립트 공식 홈페이지 | https://www.typescriptlang.org/
참고)
태그된 유니온 타입에서는 비구조화와 관련하여 재미있는 예시가 있습니다.
아래 코드에서 a 함수에서는 개발자의 의도대로 동작하지만 b 함수에서는 개발자의 의도대로 동작하지 않습니다.
왜 그런지 생각해보고 아래 깃헙 이슈에 가서 한번 살펴보는 것을 추천합니다.
https://github.com/microsoft/TypeScript/issues/23613
'개발 > 이펙티브 타입스크립트' 카테고리의 다른 글
[이펙티브 타입스크립트+26] 타입 추론에 문맥이 어떻게 사용되는지 이해하기 (0) | 2021.08.28 |
---|---|
[이펙티브 타입스크립트+25] 비동기 코드에는 콜백 대신 async 함수 사용하기 (0) | 2021.08.28 |
[이펙티브 타입스크립트+23] 한꺼번에 객체 생성하기 (0) | 2021.08.28 |
[이펙티브 타입스크립트+17] 변경 관련된 오류 방지를 위해 readonly 사용하기 (0) | 2021.08.17 |
[이펙티브 타입스크립트+16] number 인덱스 시그니처보다는 Array, 튜플, ArrayLike를 사용하기 (0) | 2021.08.16 |