0Pricing
TypeScript Academy · レッスン

Mapped Type:オブジェクト型の変換

キーを反復して新しい型の形状を作成します。

「Mapped Type:オブジェクト型の変換」はCoddyKit上の無料TypeScript Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTypeScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 TypeScript Academyコースには全4レッスンが含まれています。

ようこそ

マップ型は型のキーを反復処理し、プロパティを変換した新しい型を作成します。マップ型は、Partial、Readonly、Recordなど、多くのユーティリティの基盤です。

マップ型の基本構文

`[K in keyof T]`を使用して、Tのすべてのキーを反復処理し、新しい型を生成します。
type Copy<T> = { [K in keyof T]: T[K] };
type UserCopy = Copy<User>; // same as User

すべてのプロパティをオプショナルにする

これはPartialの実装方法です。各プロパティに?を追加します。
type Partial<T> = { [K in keyof T]?: T[K] };
type PartialUser = Partial<User>;

すべてのプロパティを読み取り専用にする

マップ型の各プロパティに`readonly`を追加します。
type Readonly<T> = { readonly [K in keyof T]: T[K] };
type FrozenUser = Readonly<User>;

値の型を変換する

キーを維持したまま、各プロパティの値の型を変更します。
type Stringify<T> = { [K in keyof T]: string };
type StringUser = Stringify<User>; // all values are string

neverを使ったプロパティのフィルタリング

値の位置で条件型を使用し、キーの再マッピングによってneverでフィルタリングします。
type OnlyStrings<T> = {
  [K in keyof T as T[K] extends string ? K : never]: T[K]
};

Record<K, V>

Recordは、特定のキーと値の型を持つオブジェクト型を作成します。
type Record<K extends string | number | symbol, V> = { [P in K]: V };
const roles: Record<'admin' | 'user', boolean> = { admin: true, user: false };

マップ型によるオプショナル性の維持

デフォルトでは、マップ型は元の型のオプショナル修飾子とreadonly修飾子を維持します。
interface User { id: number; name?: string; }
type Copy<T> = { [K in keyof T]: T[K] };
type C = Copy<User>; // id: number; name?: string (preserved)

asによるキーの再マッピング

マップ型で`as`を使用して、キーを新しい名前に再マッピングします。
type Getters<T> = {
  [K in keyof T as `get${Capitalize<string & K>}`]: () => T[K]
};

ユニオンの反復処理

keyof Tの代わりにユニオン型をマッピングして、ユニオンからオブジェクト型を作成します。
type Flags = { [K in 'option1' | 'option2' | 'option3']: boolean };

マップ型と条件型の組み合わせ

マップ型と条件型は自然に組み合わせることができ、高度な変換を実現します。
type NullableValues<T> = { [K in keyof T]: T[K] | null };

確認問題

`{ [K in keyof T]?: T[K] }`は何を生成しますか?

まとめ

マップ型はキーを反復処理して新しい型を作成します。readonlyと?の追加・削除、値の型の変換、neverによるキーのフィルタリング、asによるキーの再マッピングが可能です。TypeScriptのすべての組み込みユーティリティ型は、これらの機能を基盤としています。

よくある質問

「Mapped Type:オブジェクト型の変換」レッスンは無料ですか?

はい。「Mapped Type:オブジェクト型の変換」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、TypeScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 TypeScript Academyコースには全4レッスンが含まれています。

「Mapped Type:オブジェクト型の変換」で何を学びますか?

キーを反復して新しい型の形状を作成します。 ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

TypeScript Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのTypeScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「Mapped Type:オブジェクト型の変換」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このTypeScript Academyレッスンでコードを書いて実行できますか?

はい。すべてのTypeScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Mapped Type:オブジェクト型の変換
  2. Mapped Typeの修飾子:readonlyと?
  3. テンプレートリテラル型:文字列パターン
  4. Mapped Typeのasによるキーの再マッピング
← TypeScript Academyに戻る