0Pricing
TypeScript Academy · レッスン

テンプレートリテラル型:文字列パターン

文字列のユニオンを組み合わせてパターン型を作成します。

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

ようこそ

テンプレートリテラル型は、型レベルでバッククォート構文を使用し、他の文字列型の組み合わせから文字列型を構築します。

テンプレートリテラル型の基本

テンプレート構文で文字列リテラル型を組み合わせます。
type Greeting = `Hello, ${string}`;
const g: Greeting = 'Hello, World'; // OK
// const bad: Greeting = 'Hi there'; // Error

ユニオンの組み合わせ

テンプレートリテラルでユニオンを使用すると、TypeScriptはすべての組み合わせを生成します。
type Color = 'red' | 'green' | 'blue';
type Size = 'sm' | 'lg';
type ColorSize = `${Color}-${Size}`;
// 'red-sm' | 'red-lg' | 'green-sm' | ...

イベント名のパターン

一般的な用途の1つは、エンティティから型付きのイベント名を生成することです。
type Entity = 'user' | 'product';
type EventName = `on${Capitalize<Entity>}Created`;
// 'onUserCreated' | 'onProductCreated'

Capitalizeとその他の組み込み型

TypeScriptは、文字列操作用の組み込み型としてCapitalize、Uncapitalize、Uppercase、Lowercaseを提供しています。
type T = Capitalize<'hello world'>; // 'Hello world'
type U = Uppercase<'hello'>;        // 'HELLO'
type L = Lowercase<'WORLD'>;        // 'world'

Getter生成パターン

テンプレートリテラル型とマップ型を使用して、getterメソッド名を生成します。
type Getters<T> = {
  [K in keyof T as `get${Capitalize<string & K>}`]: () => T[K]
};

型付きルートパラメーター

URLパターン文字列から、型付きのルートパラメーターを抽出します。
type RouteParams<T extends string> =
  T extends `${infer _Start}:${infer Param}/${infer Rest}`
    ? Param | RouteParams<Rest>
    : T extends `${infer _Start}:${infer Param}`
    ? Param
    : never;

CSSプロパティ名

型付きのCSSカスタムプロパティ名を生成します。
type CSSVar = `--${string}`;
const color: CSSVar = '--primary-color'; // OK

関数パラメーターでのテンプレートリテラル

テンプレートリテラル型を使用して、文字列パラメーターを制約します。
function emit<E extends `on${string}`>(event: E): void {
  console.log('Emitting:', event);
}
emit('onClick'); // OK
// emit('click'); // Error — must start with 'on'

inferによる部分文字列の抽出

テンプレートリテラル内でinferを使用して、型レベルで部分文字列を抽出します。
type GetSuffix<T extends string> =
  T extends `${infer _Prefix}_${infer Suffix}` ? Suffix : never;
type S = GetSuffix<'user_created'>; // 'created'

Recordとの交差型

テンプレートリテラル型とRecordを組み合わせて、型付きのイベントハンドラーマップを作成します。
type Handlers<T extends string> = Record<`on${Capitalize<T>}`, () => void>;

確認問題

`type R = `${string | number}-id``は何に評価されますか?

まとめ

テンプレートリテラル型は、バッククォート構文を使って組み合わせから文字列型を構築します。ユニオンに分配され、CapitalizeやUppercaseのヘルパーと連携し、イベント名、ルートパラメーター、CSS変数の強力なパターンを実現します。

よくある質問

「テンプレートリテラル型:文字列パターン」レッスンは無料ですか?

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

「テンプレートリテラル型:文字列パターン」で何を学びますか?

文字列のユニオンを組み合わせてパターン型を作成します。 ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「テンプレートリテラル型:文字列パターン」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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