0Pricing
TypeScript Academy · レッスン

複雑な型のための型エイリアス

typeキーワードで再利用可能な型名を作成します。

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

ようこそ

Type aliasは、プリミティブ、ユニオン、インターセクション、タプル、オブジェクトなど、任意の型の式に名前を付けます。複雑な型を再利用しやすく、読みやすくできます。

typeキーワード

`type Name = TypeExpression`でtype aliasを作成します。元の型を使える場所ならどこでも使用できます。
type UserId = number;
type UserName = string;
type Point = { x: number; y: number };

ユニオン型に別名を付ける

複雑なユニオン型に名前を付けると、関数シグネチャが読みやすくなります。
type StringOrNumber = string | number;
function format(val: StringOrNumber): string {
  return String(val);
}

オブジェクト型に別名を付ける

オブジェクト型のtype aliasは、オブジェクトの形状を表す用途ではインターフェースと同じように機能します。
type Product = {
  id: number;
  name: string;
  price: number;
};
const p: Product = { id: 1, name: 'Widget', price: 9.99 };

タプル型に別名を付ける

よく使うタプルのパターンに名前を付けると、構造をあちこちで繰り返さずに済みます。
type Coordinate = [number, number];
type RGB = [number, number, number];
const pos: Coordinate = [10, 20];

関数型に別名を付ける

関数型のシグネチャに名前を付けると、パラメーターリストを簡潔に保てます。
type Comparator<T> = (a: T, b: T) => number;
const numSort: Comparator<number> = (a, b) => a - b;

Type aliasではジェネリクスを使える

インターフェースと同様に、type aliasでもジェネリック型パラメーターをサポートしています。
type Maybe<T> = T | null | undefined;
type Pair<A, B> = { first: A; second: B };

自己参照型のType alias

Type aliasは、自身を参照して、ツリーやリンクリストなどの再帰的なデータ構造を表せます。
type TreeNode = {
  value: number;
  left?: TreeNode;
  right?: TreeNode;
};

Type aliasは再オープンできない

インターフェースとは異なり、型エイリアスは定義後に追加の宣言で拡張できません。固定されています。
// Interface can be merged (declaration merging):
interface A { x: number; }
interface A { y: number; } // OK — A now has x and y

// Type alias cannot:
type B = { x: number };
// type B = { y: number }; // Error: duplicate identifier

型エイリアスによる判別可能なユニオン

型エイリアスは判別可能なユニオンに適しています。判別可能なユニオンとは、ユニオン型と共通のリテラルプロパティを組み合わせるパターンです。
type Success = { kind: 'success'; data: string };
type Failure = { kind: 'failure'; error: Error };
type Result = Success | Failure;

interfaceよりtypeを優先する場面

ユニオン、タプル、関数シグネチャ、複雑な計算型を作成する必要がある場合は`type`を使用します。拡張または実装される可能性があるオブジェクトの形状には`interface`を使用します。

確認問題

`type`エイリアスにはない、`interface`がサポートしている機能はどれですか。

まとめ

型エイリアスでは、ユニオン、タプル、オブジェクト、関数など、あらゆる型の式に名前を付けられます。ジェネリクスと再帰をサポートしています。インターフェースとは異なり、定義後に再オープンすることはできません。

よくある質問

「複雑な型のための型エイリアス」レッスンは無料ですか?

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

「複雑な型のための型エイリアス」で何を学びますか?

typeキーワードで再利用可能な型名を作成します。 ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「複雑な型のための型エイリアス」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. Interfaceによるオブジェクト形状の定義
  2. 複雑な型のための型エイリアス
  3. Interfaceの拡張とマージ
  4. InterfaceとType:使い分け
← TypeScript Academyに戻る