TypeScript | 基礎文法:オブジェクト基礎 – 型エイリアスの作成

TypeScript
スポンサーリンク

型エイリアスとは何か(ざっくり言うと「型にあだ名をつける」)

型エイリアスは、既にある型に「別名(あだ名)」をつける仕組みです。
type キーワードを使って、「この型をこれからはこの名前で呼ぶね」と宣言します。

type UserId = number;
type UserName = string;
TypeScript

ここでは「number 型に UserId という名前をつけた」「string 型に UserName という名前をつけた」というだけです。
実行時の動きは一切変わりませんが、コードを読む人間にとって「意味」が一気に分かりやすくなるのがポイントです。


基本構文:type 新しい名前 = 型

一番シンプルな書き方

type Point = {
  x: number;
  y: number;
};

const p: Point = {
  x: 10,
  y: 20,
};
TypeScript

type Point = { ... } で、「{ x: number; y: number } という形のオブジェクトを、これからは Point と呼ぶ」と決めています。
以降は { x: number; y: number } を毎回書かなくても、Point という短くて意味のある名前で表現できます。

ここで大事なのは、「新しい型を発明している」のではなく、「既存の型にラベルを貼っているだけ」という感覚です GeeksForGeeks
Point という名前を消しても、実体はただの { x: number; y: number } です。


なぜ型エイリアスが必要になるのか(メリットのイメージ)

同じ型を何度も書かなくてよくなる

例えば、ユーザー情報をあちこちで使うとします。

// 型エイリアスなし
function printUser(user: { id: number; name: string }) { ... }
function saveUser(user: { id: number; name: string }) { ... }
function deleteUser(user: { id: number; name: string }) { ... }
TypeScript

これを型エイリアスでまとめると、こうなります。

type User = {
  id: number;
  name: string;
};

function printUser(user: User) { ... }
function saveUser(user: User) { ... }
function deleteUser(user: User) { ... }
TypeScript

1か所直せば全部に反映されるので、修正漏れやコピペミスを防げます。
「同じ形を何度も書いているな」と感じたら、型エイリアスに切り出すタイミングです。

「意味のある名前」をつけることで、コードの意図が伝わる

type Email = string;
type Password = string;
TypeScript

どちらも中身は string ですが、EmailPassword という名前が付くだけで、
「ここには何を入れるつもりなのか」が一目で分かります。

function login(email: Email, password: Password) { ... }
TypeScript

ただの string よりも、「ここはメールアドレス」「ここはパスワード」という意図が型レベルで伝わるようになります。


オブジェクト型に型エイリアスをつける(よく使う基本パターン)

オブジェクトの形に名前をつける

type User = {
  id: number;
  name: string;
  age: number;
};

const u1: User = {
  id: 1,
  name: "Taro",
  age: 20,
};

function printUser(user: User) {
  console.log(user.name);
}
TypeScript

ここでやっていることは、

  • id, name, age を持つオブジェクト」という構造を1か所にまとめる
  • その構造を User という名前で再利用する

という2点です。

もしあとから「agebirthYear に変えたい」となっても、User の定義を1か所直せば済みます。
「構造の定義」と「利用する場所」を分離できるのが、型エイリアスの大きな価値です。


ユニオン型にも型エイリアスをつけられる

「複数の型のどれか」を表す型に名前をつける

type Status = "success" | "error" | "loading";

let s: Status;

s = "success"; // OK
s = "error";   // OK
s = "loading"; // OK
// s = "done"; // エラー
TypeScript

"success" | "error" | "loading" というユニオン型に Status という名前をつけています。
これで、「この変数はこの3つのどれかしか取らない」というルールを、短く・分かりやすく表現できます。

もっと複雑なユニオン型でも同じです。

type ApiResult =
  | { status: "success"; data: string }
  | { status: "error"; message: string };
TypeScript

この長い型に ApiResult という名前をつけておけば、
関数の引数や戻り値にそのまま使えて、コードの意図がかなり読みやすくなります。


型エイリアスとinterfaceの違いをざっくりだけ押さえる

どちらも「オブジェクトの形」に名前をつけられる

type UserByType = {
  id: number;
  name: string;
};

interface UserByInterface {
  id: number;
  name: string;
}
TypeScript

この2つは、ほぼ同じ意味です Qiita
初心者のうちは、「オブジェクトの形に名前をつけるなら、とりあえず type でも interface でもいい」くらいの理解で十分です。

より細かい違い(拡張の仕方など)は、
「型エイリアスに慣れてから」「実際に困ったとき」に覚えればOKです。


型エイリアスを使うときに意識してほしいこと

「意味のある名前」をつける

type A = string; よりも、type UserName = string; の方が圧倒的に読みやすいです。
「この型は何を表しているのか?」が名前から伝わるかを、いつも少しだけ意識してみてください。

「繰り返し出てくる形」を見つけたら、まずエイリアスにする

同じ { id: number; name: string } を2回以上書いたら、
「これ、User って名前をつけた方がよくない?」と一度立ち止まる。
この癖がつくと、コードの見通しが一気によくなります。


まとめ:型エイリアスは「型に名前をつけて、設計をハッキリさせる道具」

型エイリアスは、難しい機能ではありません。
やっていることはただひとつ——「型に名前をつける」だけです。

でも、その効果はかなり大きいです。

  • 同じ型を何度も書かなくてよくなる
  • 「この型は何を表しているのか」が名前から伝わる
  • 修正が1か所で済むので、設計変更に強くなる

「この形、何度も出てくるな」「この型、名前があった方が意味が伝わるな」
そう感じた瞬間が、型エイリアスを作るベストタイミングです。

タイトルとURLをコピーしました