型エイリアス

型エイリアス

型に名前を付ける

同じ形を何度も書くのは面倒です。type を使うと、型そのものに名前を付けて使い回せます。これを型エイリアスと呼びます。エイリアスとは別名のことです。

type Profile = { name: string; workCount: number; isPublic: boolean; }; function headline(profile: Profile): string { return profile.name + "(" + profile.workCount + "件)"; }

名前は大文字で始めるのが慣習です。変数と見分けやすくなります。

オブジェクト以外にも付けられる

型エイリアスはオブジェクトの形だけのものではありません。どんな型にも名前を付けられます。

type UserName = string; type WorkTitles = string[]; type Nickname = string | null;

UserName の中身はただの string ですが、名前が付くだけで読み手に意図が伝わります。string | null のような長い型ほど、名前を付けた効果が大きくなります。

名前を組み合わせられる

作った名前は、別の型の中でそのまま部品として使えます。

type Nickname = string | null; type Profile = { name: string; nickname: Nickname; titles: string[]; };

データの形が変わったとき、直すのは type を書いた 1 か所だけになります。同じ形を 10 か所に書き写していたら、10 か所すべてを直すことになっていました。

型は実行時には残らない

type で書いたものは、コンパイルすると跡形もなく消えます。変数のように値が入っているわけではないので、実行中に Profile を呼び出したりはできません。

type Profile = { name: string }; console.log(Profile); // エラー 'Profile' only refers to a type.

型は書いている最中にだけ働く道具だ、と考えてください。

手を動かす

演習では、プロフィールのデータを受け取って一行の紹介文を返す関数を仕上げます。引数の型を直接書かずに、type で名前を付けてから使ってください。ニックネームの型にも名前を付けると、読みやすさの違いが分かります。

要件

  1. ニックネーム用の型エイリアスを type で定義する
  2. プロフィール用の型エイリアスを type で定義し、ニックネームの型を部品として使う
  3. profile にその型エイリアスを付けて型エラーを消す

入出力例

profileLine({"name":"ゆめさく","nickname":"ゆめ","workCount":3})"ゆめさんの公開作品は3件です" profileLine({"name":"ゆめさく","nickname":null,"workCount":3})"ゆめさくさんの公開作品は3件です" profileLine({"name":"たなか","nickname":null,"workCount":0})"たなかさんの公開作品は0件です" profileLine({"name":"さとう","nickname":"さとやん","workCount":12})"さとやんさんの公開作品は12件です"

ヒント

生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア
編集 LuaGate編集部
main.ts
main.ts
学習モード

メモ

型エイリアス

⌘S で保存