지정된 문자열만 사용할 수 있는 문자열 변수를 선언할 때, 문자열 조합 형식 String Union Type을 사용합니다.
type Status = 'Todo' | 'InProgress' | 'Done';
const status: Status = 'Todo'; // ✔️ OK
const status2: Status = 'None'; // ❌ Error
이 때, 문자열 조합 형식이 허용하는 문자열을 출력하려고 하면, 쉬운 방법이 생각나지 않습니다.
아래 코드는 임의로 작성한 코드이고, 동작하지 않습니다.
const some: Status // ??
<select>
{typeof(Status).map(status => <option value={status}>{status}</option>)} // ??
</select>
이를 위해 아래와 같이 형식 정의를 변경할 수 있습니다.
const statusTypes = ['Todo', 'InProgress', 'Done'] as const;
type Status = typeof statusTypes[number];
const status: Status = 'Todo'; // ✔️ OK
const status2: Status = 'None'; // ❌ Error
첫번째, 두번째 Status
형식 정의는 동일하게 동작합니다.
이제 문자열 조합 형식이 허용하는 문자열을 쉽게 출력할 수 있습니다.
<select>
{statusTypes.map(status => <option value={status}>{status}</option>)} // 🙂
</select>
이 사이트는 광고를 포함하고 있습니다.
광고로 발생한 수익금은 서버 유지 관리에 사용되고 있습니다.This site contains advertisements.
Revenue generated by the ad servers are being used for maintenance.