0Pricing
TypeScript Academy · レッスン

typeofと真偽値によるナローイング

typeofチェックでプリミティブ型を絞り込みます。

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

はじめに

TypeScript は条件分岐ブロック内でユニオン型を絞り込みます。`typeof` チェックと真偽値チェックが、最も一般的な絞り込みの方法です。

typeof による絞り込み

`typeof` を使ってプリミティブ型をチェックします。TypeScript は typeof チェックを理解し、ブロック内で型を絞り込みます。
function process(val: string | number) {
  if (typeof val === 'string') {
    return val.toUpperCase(); // val: string
  }
  return val.toFixed(2); // val: number
}

typeof の戻り値

typeof は 'string'、'number'、'boolean'、'bigint'、'symbol'、'undefined'、'object'、または 'function' を返します。注:typeof null === 'object' となるのは、JavaScript の仕様上の注意点です。
typeof 'hello'    // 'string'
typeof 42         // 'number'
typeof true       // 'boolean'
typeof null       // 'object' (quirk!)
typeof undefined  // 'undefined'

真偽値による絞り込み

JavaScript の値には truthy と falsy があります。TypeScript は truthy チェックの中で `T | null | undefined` を `T` に絞り込みます。
function greet(name: string | null) {
  if (name) {
    console.log('Hello, ' + name); // name: string
  } else {
    console.log('Hello, stranger');
  }
}

Falsy な値

JavaScript における falsy な値は、false、0、''、null、undefined、0n、NaN です。truthy による絞り込みでは、チェックが成功したときにこれらを型から除外します。

ブール値への変換による絞り込み

`Boolean(val)` または `!!val` を使っても、null と undefined を絞り込んで除外できます。
const items: (string | null)[] = ['a', null, 'b', null];
const strings = items.filter((x): x is string => x !== null);

否定条件

TypeScript は else ブランチや早期 return の後でも型を絞り込みます。
function getLength(val: string | null): number {
  if (!val) return 0; // early return narrows
  return val.length;  // val: string here
}

typeof と等価性の組み合わせ

厳密等価演算子(===)を typeof と組み合わせると、型を正確に絞り込めます。
function accept(x: string | number | boolean) {
  if (typeof x === 'string' || typeof x === 'number') {
    console.log(x); // x: string | number
  }
}

typeof では null に絞り込めない

null に絞り込むには、厳密等価演算子 `=== null` を使います。truthiness では、null とその他の falsy な値を区別できません。
function check(x: string | null | 0) {
  if (x === null) { /* x: null */ }
  else if (x === 0) { /* x: 0 */ }
  else { /* x: string */ }
}

ループ内での絞り込み

TypeScript は if 文だけでなく、ループ本体の内部でも型の絞り込みを適用します。

制御フロー解析

TypeScript は制御フロー解析を使って、コード内の各地点での型を追跡します。代入によって型も更新されます。
let x: string | number = 'hello';
// x: string
x = 42;
// x: number

確認問題

`string | number` だったとすると、`if (typeof val === 'string')` の内部で `val` の型は何ですか。

まとめ

TypeScript では、typeof チェックと truthiness 条件によってユニオン型を絞り込めます。TypeScript は制御フロー解析を使って各地点の型を追跡します。null/undefined のチェックには厳密等価演算子を使います。

よくある質問

「typeofと真偽値によるナローイング」レッスンは無料ですか?

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

「typeofと真偽値によるナローイング」で何を学びますか?

typeofチェックでプリミティブ型を絞り込みます。 ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「typeofと真偽値によるナローイング」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. typeofと真偽値によるナローイング
  2. instanceofとinによるナローイング
  3. ユーザー定義型ガード関数
  4. neverによる網羅性チェック
← TypeScript Academyに戻る