TypeScript - 리터럴 우선 유니온 타입 (Literal-First Union Type)
다음과 같은 타입이 있다고 해보자.type Shape = 'SQUARE' | 'TRIANGLE' | 'CIRCLE'`Shape` 타입은 3개의 문자열(`SQUARE`, `TRIANGLE`, `CIRCLE`)만 허용하도록 하는 문자열 리터럴 타입이다. 그런데 이때 (조건 1) 3개의 문자열에 대해 타입 힌트는 주고 싶지만, (조건 2) 3개의 문자열에 속하지 않는 다른 문자열도 허락하고 싶다면 어떻게 해야할까.type Shape = 'SQUARE' | 'TRIANGLE' | 'CIRCLE' | string간단하게 위와 같이 정의해볼 수 있을 것이다. 하지만 이는 잘못된 구현이다. 위와 같이 정의하면 유니온 타입의 특성상 `Shape` 은 문자열 리터럴 타입이 아니라 `string` 타입으로 확장되어 `st..