【TypeScript】マップド型(Mapped Types)とは何ですか?
TypeScript

【TypeScript】マップド型(Mapped Types)とは何ですか?

作成日:2021年08月01日
更新日:2021年08月05日

Profile オブジェクトの型があったとします。

ts
type Profile = {
name: string;
age: number;
};

こちらの型を使いたいが、age は必要ない場合、パーシャル型を使用しました。

同様に、特定の型を他の型に作り替えたい場合、マップド型(Mapped Types)を使います。

書き方は、新しい型を作り、中に、『[P in keyof T]?: T[P]』と書きます。

T の中身には、元となる型が入ります。

今回は、Profile 型になります。

in keyof というのは、T の文字列リテラルのユニオン型を取得することができます。

ts
type CustomProfile = { [P in keyof Profile]?: Profile[P] };

P は、Property の略で、プロパティが入ります。

つまり、Profile 型から、name と age を一つずつ取り出して型として使うか確認するというイメージです。

CustomProfile を確認すると、

image2

name と age がオプションになっているのがわかります。

実際に、確かめてみると

ts
let tanaka: CustomProfile = { name: "田中" };

image3

tanaka に age がなくてもエラーが発生しませんでした。

© 2024あずきぱんウェブスタジオ