운좋게 각 유니언 타입에 모두 공통적인 속성이 들어 있는 경우에는 타입 좁히기를 할 필요가 없습니다. 다음 함수에서 매개변수 value의 타입은 string일 수도 있고, number일 수도 있고, boolean일 수도 있습니다.
function returnString(value: string | number | boolean): string {
return value.toString();
}
returnString(1);
returnString('1');
returnString(true);
문자열, 숫자, 불 값에 모두 toString 메서드가 있고, toString 메서드가 전부 string을 반환하므로 if문이 필요하지 않습니다.
유니언의 문법적 특징이 하나 있습니다. 타입 사이에만 | 연산자를 쓸 수 있는 것이 아니라 타입 앞에도 사용할 수 있다는 점입니다.
type Union1 = | string | boolean | number | null;
type Union2 =
| string
| boolean
| number
| null;
Union1과 Union2는 모두 유효한 문법입니다. Union1처럼 사용하는 경우는 거의 없지만, Union2는 여러 줄에 걸쳐서 유니언을 표기하고 싶을 때 종종 사용합니다.