Dev Study
← 解説「テンプレートリテラル型と文字列操作型」に戻る

サンプルコードで身につける: テンプレートリテラル型と文字列操作型

解説で学んだ概念を、5つの具体例で確認します。素朴な例から実務寄りの例へと進みます。

1テンプレートリテラル型で文字列を埋め込む

テンプレートリテラル型は、バッククォートと ${...} を使って型の中に文字列を組み立てる仕組みです。`hello_${Lang}` のように書くと、Lang の候補それぞれに hello_ を付けたリテラル型のユニオンになります。実行時のテンプレートリテラルとそっくりな書き方で、型の世界の文字列を作れます。

TypeScript

2ジェネリクスと組み合わせてイベント名を作る

テンプレートリテラル型は組み込みの文字列操作型(Capitalize など)と組み合わせると強力です。`on${Capitalize<T>}` と書けば、"click" から "onClick" のようなイベントハンドラ名の型を機械的に導出できます。命名規則を型で保証したい場面で実務でも使われます。

TypeScript

3Capitalize / Uncapitalize で先頭だけ変える

Capitalize は先頭1文字だけを大文字に、Uncapitalize は先頭1文字だけを小文字にします。プロパティ名(userName)とコンポーネント名(UserName)のように、先頭の大小だけが違う命名規則の対応を型で表せます。全部大文字にする Uppercase との違いを見比べましょう。

TypeScript

4型レベルの変換と実行時の変換を対応させる

型の Lowercase は実行時の toLowerCase と対になる存在です。表記ゆれのあるコマンド入力を小文字に正規化する関数で、戻り値の型を Lowercase<RawCommand> にしておけば「正規化済みの値である」ことが型で伝わります。toLowerCase の戻り値はただの string なので、リテラル型に戻すために型アサーションを使います。

TypeScript

5実務: 設定の型から環境変数名の対応表を導出する

アプリ設定の型から、環境変数名(全部大文字)をキーにした対応表の型をマップ型と Uppercase で導出する実務例です。AppConfig にキーを足すと EnvTable の必須キーも自動で増え、環境変数の用意し忘れをコンパイラが検出します。これがないと "PORT" | "HOST" のような大文字のキー一覧を手書きして、設定の型と二重管理することになります。

TypeScript