本文へスキップ
BecomeCoder

TypeScriptコース · 第7章 モダンTSと設定 · レッスン23

テンプレートリテラル型

ブラウザで完結

導入

"user_1""user_2" のように、決まった形をした文字列を扱いたいことがあります。JavaScript のテンプレートリテラル(`文字列${変数}`)と同じ書き方を、型の世界でも使えます。

説明

テンプレートリテラル型は、文字列の型を組み立てるための型です。

type UserId = `user_${number}`;

let id: UserId = "user_1";
console.log(id);
// let bad: UserId = "person_1"; // エラー: user_ で始まらない

ユニオン型と組み合わせると、複数のパターンをまとめて表現できます。

type EventName = `on${"Click" | "Hover"}`;   // "onClick" | "onHover"

let e: EventName = "onClick";
console.log(e);

CSSクラス名やイベント名、APIのエンドポイントのように「決まった接頭辞・接尾辞を持つ文字列」を型で表現したいときに便利です。

やってみよう

EventName"onFocus" を追加したいとき、EventName の定義をどう書き換えればよいか考えてみましょう。

演習

type UserId = `user_${number}`; を定義し、UserId 型の変数 id"user_42" を入れて console.log(id) で表示してください。

ヒント1を見る

type UserId = `user_${number}`; と書きます。

ヒント2を見る

let id: UserId = "user_42"; console.log(id);

実際に動かしてみよう

下のエディタにTypeScriptを書いて「実行」を押すと、その場でJavaScriptに変換してブラウザ内で実行し、出力が表示されます。本文の例をそのまま試したり、型注釈を書き換えたりしてみましょう(console.log の結果が下に出ます。初回だけコンパイラの読み込みに少し時間がかかります)。

TypeScript — ブラウザ内で実行

TypeScriptコンパイラ(同梱)でTS→JSに変換してから実行する学習用環境を読み込みます(初回のみコンパイラの読み込みに少し時間がかかります)。
スクロールして表示された時点でも自動で読み込まれます。