📑

型の変換【TypeScript】

2024/06/23に公開

はじめに

実務でTypeScriptの型の変換についてわからないことがあり調べたので、
備忘録として残しておきます。

TypeScript においての型の変換

TypeScript において、型の変換を指す用語はいくつかあります。
それらを一つずつ整理していきたいと思います。

1.型変換(Type Conversion)

型変換は、ある型の値を別の型の値に変換することです。例えば、文字列を数値に変換することなどが含まれます。

let str: string = "123";
let num: number = Number(str);

2.型キャスト(Type Casting)

型キャストとは、ある型を別の型に変換することです。TypeScriptでは、as キーワードやアングルブラケット(TypeScriptの非推奨方式)を使用して型キャストを行います。

let value: any = "Hello, TypeScript";
let strLength: number = (value as string).length;

3.型アサーション(Type Assertion)

型アサーションは、変数が特定の型であることをコンパイラに伝えるための手段です。型キャストと同様に as キーワードを使いますが、実行時に型チェックは行われません。

let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;

4.型ナローイング(Type Narrowing)

型ナローイングは、ある値が特定の型であることを確認するための方法です。TypeScriptは、typeof、instanceof、ユーザー定義の型ガードを使って型を絞り込みます。

function padLeft(value: string, padding: number | string) {
  if (typeof padding === "number") {
    return Array(padding + 1).join(" ") + value;
  }
  if (typeof padding === "string") {
    return padding + value;
  }
  throw new Error(`Expected string or number, got '${padding}'.`);
}

5.型推論(Type Inference)

型推論は、TypeScriptのコンパイラがコードを解析して変数の型を自動的に推論するプロセスです。

let x = 3;  // TypeScript は x の型を number と推論する

まとめ

上記の用語や用途はそれぞれ異なる文脈で使われますが、すべて型の変換に関するものです。
状況に応じて適切に型を変換できるようになればコードの幅もきっと広がるはずです。

Discussion