目次
【初心者向け】TypeScriptのanyとunknownの違いをわかりやすく解説!
TypeScriptを使っているとよく目にする any と unknown。どちらも「どんな型でも受け取れる」特徴を持っていますが、実は大きな違いがあります。
anyとは?
any
は「何でもアリ」の型です。コンパイラの型チェックをスルーできるため、どんな値でも代入・使用が可能です。
let anything: any = 123;
anything = "Hello";
anything = { key: "value" };
// エラーなし!
便利な反面、型安全性が崩壊するため、使いすぎるとバグの温床になります。
unknownとは?
unknown
は「何でも受け取れるけど、使う前にチェックが必要」な型です。
let something: unknown = 123;
something = "Hello";
something = { key: "value" };
// 直接使おうとするとエラー
// console.log(something.toFixed()); // ❌エラー
// 使う前に型チェックが必要
if (typeof something === "number") {
console.log(something.toFixed()); // OK
}
型の確認を強制することで、安全なコードを書けるメリットがあります。
anyとunknownの決定的な違い
項目 | any | unknown |
---|---|---|
代入できるもの | 何でも | 何でも |
使用時の制約 | なし(危険) | 型チェック必須(安全) |
型安全性 | ない | 高い |
どっちを使うべき?
基本的にはunknown推奨です。
どうしても型がわからないデータを扱う場合でも、unknown
を使うことで、型チェックを忘れず安全にコードを書くことができます。
ポイントまとめ
- とりあえず動かしたいなら any(ただしリスクあり)
- 型安全にこだわるなら unknown(推奨)
まとめ
TypeScript初心者ほど、「unknownをデフォルト」と考えるのがオススメです!
型安全なコードを書けるようになれば、開発スピードも品質もぐんと上がりますよ✨