メモ。
こんな感じで、ある配列として定義されている値に対し、「その値のいずれか」を意図した String Literal Types を作りたい。
const size = ['small', 'medium', 'large']; type Size = 'small' | 'medium' | 'large';
でも、配列と型定義とで値を二度書きたくない。
こうする
TypeScript 3.4 で導入された const assertion を使うと、次のように書ける。
const size = ['small', 'medium', 'large'] as const; // readonly ["small", "medium", "large"] type Size = typeof size[number]; // 'small' | 'medium' | 'large'
こちらの Stack Overflow を参考にした。