0Pricing
TypeScript Academy · レッスン

ユニオン型:AまたはB

| を使って複数の型の可能性を許可します。

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

ようこそ

ユニオン型を使用すると、値が複数の型のいずれかになります。`|`演算子で記述し、現実世界のデータをモデル化するための基本的な機能です。

基本的なユニオン構文

`|` を使って2つ以上の型を組み合わせます。ユニオン型の変数には、列挙された型のいずれか1つを格納できます。
let id: string | number;
id = 'abc123'; // OK
id = 42;       // OK
// id = true;  // Error

関数パラメーターのユニオン型

ユニオン型のパラメーターを使うと、関数で複数の入力型を受け取れます。
function format(val: string | number): string {
  return typeof val === 'string' ? val.toUpperCase() : val.toFixed(2);
}

ユニオンの各メンバーには絞り込みが必要

絞り込みを行わない場合、ユニオンのすべてのメンバーに共通するメソッドだけを呼び出せます。型固有のメソッドを使うには、先に型を絞り込む必要があります。
function process(val: string | number) {
  // val.toFixed(2); // Error — not on string
  if (typeof val === 'number') {
    val.toFixed(2); // OK
  }
}

リテラル型とのユニオン

リテラル値のユニオン型を使うと、列挙型のように使用できる、許可された文字列または数値の集合を作成できます。
type Direction = 'north' | 'south' | 'east' | 'west';
type StatusCode = 200 | 201 | 400 | 404 | 500;

null許容型のユニオン

strictNullChecks が有効な場合、省略可能な値を表すために `T | null` または `T | undefined` を使うのが最も一般的なユニオンです。
function getUser(id: number): User | null {
  return db.find(u => u.id === id) ?? null;
}

オブジェクト型のユニオン

ユニオン型ではオブジェクト型を組み合わせられます。TypeScript では、絞り込みを行わない場合、すべてのメンバーに共通するプロパティだけにアクセスできます。
type Cat = { kind: 'cat'; meow(): void };
type Dog = { kind: 'dog'; bark(): void };
type Pet = Cat | Dog;
function speak(pet: Pet) {
  if (pet.kind === 'cat') pet.meow();
  else pet.bark();
}

3つ以上の型によるユニオン

ユニオン型には必要な数だけ型を含められます。
type Input = string | number | boolean | null;

戻り値の型のユニオン

関数は、処理内容に応じて異なる型を返せます。これをユニオン型の戻り値で表現します。
function divide(a: number, b: number): number | null {
  if (b === 0) return null;
  return a / b;
}

判別可能なユニオン

ユニオンのメンバーに共通するリテラルプロパティ(判別子)を追加します。TypeScript はこれを使って型を自動的に絞り込みます。
type Square = { kind: 'square'; side: number };
type Circle = { kind: 'circle'; radius: number };
type Shape = Square | Circle;

絞り込みなしで共通プロパティを使う

すべてのユニオンメンバーに共通するプロパティがある場合は、絞り込みを行わずにアクセスできます。
type A = { name: string; x: number };
type B = { name: string; y: number };
type AB = A | B;
function getName(obj: AB): string {
  return obj.name; // OK — name is on both
}

確認問題

文字列または数値のいずれかになるユニオン型を作成する構文はどれですか。

まとめ

ユニオン型(|)を使うと、複数の型の値を扱えます。型固有の操作を行う前にユニオンを絞り込みます。リテラル型のユニオンでは、値を有限個の集合に制限できます。判別可能なユニオンでは、共通のタグを追加して絞り込みやすくします。

よくある質問

「ユニオン型:AまたはB」レッスンは無料ですか?

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

「ユニオン型:AまたはB」で何を学びますか?

| を使って複数の型の可能性を許可します。 ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「ユニオン型:AまたはB」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. ユニオン型:AまたはB
  2. インターセクション型:AかつB
  3. 安全なパターンマッチングのための判別可能なユニオン
  4. ユニオンとインターセクションの実践パターン
← TypeScript Academyに戻る