TypeScriptで配列型の要素がオブジェクトの場合にその型を取得する方法

TypeScript
2021-04-30

TypeScriptでライブラリ内や自動的に生成された型定義で、配列の要素がオブジェクトであるときに、その要素が型として定義されていない場合があります。この型を呼出したり型として再定義する方法です。

export type Animals = { name: string; size: number }[];

// または exportされていない場合

type Animals = { name: string; size: number };
export type Animals = Animal[];

上記のような配列の中身の型を取得したい場合、 [number] で型定義を取得できる

type NewAnimal = Animals[number]
// NewAnimal = {name: string; size: number}

[number] ではあるため [0][1000] でも一応は問題ない。

ちなみに型のない場合に取得したい場合は以下のようにできる

const animals = [
  { name: 'dag', size: 10 },
  { name: 'cat', size: 6 }
];

type NewAnimal = typeof animals[0]

avatar
Written by Kyohei Tsukuda who lives and works in Tokyo 🇯🇵 , building useful things 🔧.