TypeScriptで配列内 連想配列の特定keyで文字列でユニオン型 (union type) を作る方法
2022年6月22日
2022年6月27日
目次
ユニオン型とは
https://typescriptbook.jp/reference/values-types-variables/union
TypeScriptのユニオン型(union type)は「いずれかの型」を表現するものです。
連想配列のkeyで文字列でユニオン型 (union type) を作る方法として、keyof typeof Test
とする方法があります。
さらに配列の場合の一つのkeyで同じことができないかなと思いやり方をメモしておきます。
連想配列のkeyで文字列のユニオン型 (union type) を作る方法
const Test = {
A: 'a',
B: 'b',
C: 'c',
};
type TestType = keyof typeof Test // "A" | "B" | "C"
連想配列のvalueのユニオン型を作る方法
const Test = {
A: 'a',
B: 'b',
C: 'c',
D: () => {},
} as const;
type TestType = typeof Test[keyof typeof Test] // "a" | "b" | "c" | () => {
constアサーション「as const」 (const assertion)を忘れずに
https://typescriptbook.jp/reference/values-types-variables/const-assertion
オブジェクトリテラルの末尾にas const
を記述すればプロパティがreadonly
でリテラルタイプで指定した物と同等の扱いになります。
これをつけずに行うとstring | () => {}
なってしまいます。
配列内 連想配列のkeyで文字列のユニオン型 (union type) を作る方法
const Test = [
{
name: 'a',
},
{
name: 'b',
}
] as const;
type TestType = typeof Test[number]['name'] // "a" | "b"
こちらも同じくas const
を忘れずに書きましょう。
まとめ
このように配列、連想配列の特定key
から文字列のユニオン型のtypeを作りたいと思う時がたまにあり毎回忘れてしまったりするのでメモとして残しておきます。
型定義も複雑ものを作りたい時に苦労するので、迷ったときはメモして残していこうと思います。