TypeScriptの型推論を理解する
はじめに:なぜ型推論が重要か?
TypeScriptでは、明示的に型を指定しなくても、変数の初期値などから自動的に型を推論してくれる機能がある。これは便利だけど、逆にどこまで型を指定すべきか迷いやすいポイントでもある。
読者
結局、型ってどこまで書くべき?
特に初学者にとっては「型を書いた方がいいのか?推論に任せるべきか?」という判断が難しい。この記事では、実例を通して型推論の動作や、どんなときに明示的な型指定が必要かを紹介する。
ごりら
推論で足りるケースと、バグを防ぐために型を明示すべきケースを区別しよう。
基本の型推論
次のように書いた場合、TypeScriptは変数の型を自動的に `number` と推論する。
読者
…
let count = 5; // 推論される型: number
関数の戻り値や引数でも、ある程度は型を推論してくれるが、複雑な構造になると途端に限界が見えてくる。
ごりら
関数の戻り値は明示しよう。意図が伝わるし、将来的なリファクタでも安心。
推論が効かないパターン
オブジェクトリテラルや関数の引数として使ったときに、型推論の限界が見えることがある。
読者
…
function greet(user: any) {
console.log("Hello " + user.name);
}
greet({ name: "Taro" }); // エラーなし
このコードは一見正しく見えるけど、関数の `user` 引数に型がないため、将来的に `name` プロパティ以外を使うときに型安全が失われる。
ごりら
この場合は `user: { name: string }` のように明示しよう!
まとめ
TypeScriptの型推論は便利だけど、すべてを任せきりにするのは危険。基本は推論に頼りつつ、関数の引数や戻り値、外部とやりとりする部分は明示的に型を指定するのが安全。
ごりら
実践ポイント:変数は推論でOK、関数や外部データは型を明示すること!


コメント