型アサーションの使用法と注意点の備忘録
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 にはわからない型を保証できる。
- 型の強制的な変換ができる。
デメリット
- 実行時の保証はない。
- 型安全性を壊す可能性がある。
- 過信すると保守性が下がる。
型チェッカーの推論を開発者で上書きできる機能のため、使用には注意が必要。あくまで最終手段として使用するのが安全。