3장 유니언과 리터럴
타입스크립트가 추론을 수행하는 두 가지 핵심 개념은 다음과 같다.
- 유니언: 값에 허용된 타입을 두 개 이상의 가능한 타입으로 확장하는 것
- 내로잉: 값에 허용된 타입이 하나 이상의 가능한 타입이 되지 않도록 좁히는 것
3.1 유니언 타입
유니언 타입
- 값이 정확히 어떤 타입인지 모르지만 두 개 이상의 옵션 중 하나의 타입
- 가능한 값 또는 구성 요소 사이에
|
연산자를 사용해서 나타냄
3.1.1 유니언 타입 선언
변수의 초깃값이 있더라도 변수에 대한 명시적 타입 애너테이션을 제공하는 것이 유용할 때 유니언 타입을 사용한다.
다음 예제에서 thinker
의 초깃값은 null
이지만 잠재적으로 null
대신 string이 될 수 있음을 알려준다.
let thinker: string | null = null;
if (Math.random() > 0.5) {
thinker = 'Susanne Langer';
}
3.1.2 유니언 속성
값이 유니언 타입일 때 타입스크립트는 유니언으로 선언한 모든 가능한 타입에 존재하는 멤버 속성에만 접근할 수 있다.
내로잉: 유니언 타입으로 정의된 여러 타입 중 하나의 타입으로 된 값의 속성을 사용하기 위해 코드에서 값이 보다 구체적인 타입 중 하나라는 것을 타입스크립트에 알리는 과정
3.2 내로잉
내로잉: 값이 정의, 선언 혹은 이전에 유추된 것보다 더 구체적인 타입임을 코드에서 유추하는 것
타입 가드: 타입을 좁히는 데 사용할 수 있는 논리적 검사
3.2.1 값 할당을 통한 내로잉
변수에 값을 직접 할당하면 타입스크립트는 변수의 타입을 할당된 값의 타입으로 좁힌다.
변수에 유니언 타입 애너테이션이 명시되고 초깃값이 주어질 때 값 할당 내로잉이 작동한다. 타입스크립트는 변수가 나중에 유니언 타입으로 선언된 타입 중 하나의 값을 받을 수 있지만, 처음에는 초기에 할당된 값의 타입으로 시작한다는 것을 이해한다.