Noh | エンジニア向け情報共有コミュニティ
Signup / Login

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 を作ってるエンジニア。

目次