TypeScriptで配列からUnion Typeを生成する
typescript
投稿日: 2024/07/23
TypeScriptで配列からUnion Typeを生成
厳密にORじゃないみたいですが、Union Typeがパッと浮かばない人がOR型とかのワードでも検索するかなと思ってこの一文を足してます。
TypeScriptでリテラル型を作成するには、まずリテラル型のユニオンを定義する必要があります。const values = ["0.6" , "0.7" , "0.8" , "0.9" , "1.0", "auto"]
から"0.6" | "0.7" | "0.8" | "0.9" | "1.0" | "auto"
という型を作成する方法を示します。
const values = ["0.6" , "0.7" , "0.8" , "0.9" , "1.0", "auto"] as const; type Value = typeof values[number]; // Valueは "0.6" | "0.7" | "0.8" | "0.9" | "1.0" | "auto" になります
これだけです。
余談 const assertion な配列に文字列が含まれるか判定する方法
valueの型は"0.6" | "0.7" | "0.8" | "0.9" | "1.0" | "auto"
、textはstring型なので以下のコードはエラーになる。
if(values.includes(text)) { ... }
Argument of type 'string' is not assignable to parameter of type '"0.6" | "0.7" | "0.8" | "0.9" | "1.0" | "auto"'.ts(2345)
string[]型にasキャストすると良い。
if((values as readonly string[]).includes(text)) { ... }
yosi
Noh を作ってるエンジニア。