tamakipedia

フロントエンドエンジニア。Typescriptもう特訓中です。一日の振り返りや学んだことをちょっとずつ吐いています。

【Typescript】オブジェクトのキーの文字列のみを許容する動的な型宣言

オブジェクトのキーをオブジェクトの型のプロパティーとしてそのまま流用したい場合。

まず、オブジェクトの型を定義したい場合

type Panda = {
  age: number
}

const panda: Panda = {
 age: 11,
}
//型通り

そのオブジェクトのキーをage, name, color, dream のいずれかにしたい場合

type Panda =  {[K in 'age'|'name'|'color'|'dream']: string}

const panda: Panda = {age: "fifty five" ,name: "Eric Clapton",color: "red", dream: "change the world"}

インターフェースのオブジェクトのキーを次の型のプロパティーにする

type Panda = {
 age: number;
 name: string;
 dream: string;
}

type Pandaaaa = {[K in keyof Panda]: string}
// Panda型のキーがPandaaaaのプロパティーとして使える

上記のように、オブジェクトのキーも特定の文字だけしか入らないようにすることが可能。
特に [K in keyof Object]と記述し、オブジェクトのプロパティを指定したり、
[K in 'A'|'B'|'C']と記述し、特定のキーを直書きすることができる。