型アサーションの使用法と注意点の備忘録

TypeScriptの型アサーションについての備忘録。

型アサーションとは

この値はこの型だとコンパイラに保証するための宣言。
開発者が作成した変数に対し、型チェッカーの推論を上書きし、開発者側が「この変数はこの型に間違いない」という宣言を行う。

ちなみに英語で型アサーションは Type Assertion と書く。assertion は 「断言」や「表明」という意味。

基本的な使い方

const input = document.querySelector("input") as HTMLInputElement;

as を使用する。

実務的にはAPI レスポンスの型を指定するときに使ったりする。

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

// 実際は JSON.parse() の戻り値は any 型
const json = '{"id": 1, "name": "Taro"}';
const user = JSON.parse(json) as User;

メリット・デメリット

メリット

  • 推論が不十分なときに、開発者が明示的に型を与えられる。
  • DOM 操作や JSON パース結果など、TypeScript にはわからない型を保証できる。
  • 型の強制的な変換ができる。

デメリット

  • 実行時の保証はない。
  • 型安全性を壊す可能性がある。
  • 過信すると保守性が下がる。

型チェッカーの推論を開発者で上書きできる機能のため、使用には注意が必要。あくまで最終手段として使用するのが安全。