キーの再マッピングとテンプレートリテラル型
「as」でキーを再マッピングし、テンプレートリテラル(Capitalize/Uncapitalize)でキーを作り、名前のパターンでプロパティを絞り込みます
「キーの再マッピングとテンプレートリテラル型」はCoddyKit上の無料TypeScript Academyレッスンです。 これはレッスン2/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTypeScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 TypeScript Academyコースには全3レッスンが含まれています。
概要
目標: テンプレートリテラル型とともにキーの再マッピング(as 句)を使い、名前のパターンに基づいてプロパティの名前変更、生成、削除を行います。
- キーの名前を変更する:
K as NewK neverでキーをフィルタリングする- 名前を組み立てる:
`get${Capitalize<K>}`
キーの名前を変更
as を使ってキーの名前を変更します。例: snake_case の名前を camelCasee に変換します。
type Original = { first_name: string; last_name: string }
type Camelize<T> = {
[K in keyof T as K extends `${infer A}_${infer B}`
? `${A}${Capitalize<B>}`
: K]: T[K]
}
type UserCamel = Camelize<Original> // { firstName: string; lastName: string }プレフィックスでフィルタリング
never キーを削除します。テンプレート: `on${string}` を使ってイベントハンドラーをフィルタリングします。
type Props = { onClick: () => void; onSubmit: () => void; title: string }
type WithoutHandlers<T> = {
[K in keyof T as K extends `on${string}` ? never : K]: T[K]
}
type Clean = WithoutHandlers<Props> // { title: string }メソッドを生成
テンプレート名で API の公開部分を生成します。get${Capitalize<K>} パターンを使うと、フィールドからゲッターを作成できます。
type Fields = "name" | "email"
type Getters<T extends string> = {
[K in T as `get${Capitalize<K>}`]: () => string
}
type ClientAPI = Getters<Fields>
// { getName: () => string; getEmail: () => string }パターンを組み合わせる
複数のテンプレートを組み合わせて明確な名前を生成し、大規模なプロジェクト全体で一貫した命名を実現します。
type Route = `/${"" | `${string}`}`
type HttpMethod = "get" | "post"
type Endpoints<T extends string, M extends string> = {
[K in T as `${M}_${K}`]: { path: `/${K}`; method: Uppercase<M> }
}
type API = Endpoints<"users" | "login", HttpMethod>
// { get_users: { path: "/users"; method: "GET" }, post_login: { path: "/login"; method: "POST" } }ヒントと注意点
ヒント:
再マッピングはコストがかかるため、複雑な型はエイリアスに分割してください。
フィルターには単純なテンプレートを使用します: `on${string}`、`data-${string}`。
Capitalize/Uncapitalize/Uppercase/Lowercase ヘルパーを使用してください。
名前の生成が過剰になった場合は、API を簡素化してください。
プレフィックスのフィルタリングを確認
簡単な確認: on で始まるプロパティを削除するマップ型のパターンはどれですか。
振り返り
振り返り: キーの再マッピングで名前の変更とフィルタリングを行い、テンプレートリテラル型でキーを生成し、不要なキーを never で削除します。
よくある質問
「キーの再マッピングとテンプレートリテラル型」レッスンは無料ですか?
はい。「キーの再マッピングとテンプレートリテラル型」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、TypeScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 TypeScript Academyコースには全3レッスンが含まれています。
「キーの再マッピングとテンプレートリテラル型」で何を学びますか?
「as」でキーを再マッピングし、テンプレートリテラル(Capitalize/Uncapitalize)でキーを作り、名前のパターンでプロパティを絞り込みます ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
TypeScript Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのTypeScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/3です。
「キーの再マッピングとテンプレートリテラル型」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このTypeScript Academyレッスンでコードを書いて実行できますか?
はい。すべてのTypeScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- +/-readonlyと+/-?を使ったMapped Types
- キーの再マッピングとテンプレートリテラル型
- 文字列パターンの型付け(ルートパラメーター、イベント名)