こんにちは。フロントエンドの現場で、日々TypeScriptという「最高の相棒」と一緒にコードを書いているアーキテクトです。
TypeScriptを学び始めたばかりの頃、あなたはきっと「型」という言葉に少し身構えてしまっているかもしれませんね。「なぜわざわざ面倒なことを書かなきゃいけないの?」と、イライラした経験はありませんか?
実は、そのイライラこそがTypeScriptの本質であり、そして今日お話しする`noImplicitAny`という設定は、あなたのコードを「事故のない安心なもの」に変えるための最初の一歩なんです。
—
TypeScriptの「暗黙のany」は、忘れ物と同じ
まず、`any`という型を想像してみてください。これはTypeScriptにおいて「なんでもあり」を意味する、いわば「魔法の箱」です。どんな数字も、文字も、あるいは間違ったデータですら全部受け入れてしまいます。
しかし、この「なんでもあり」が勝手に発生してしまうことがあります。それが「暗黙のany(Implicit any)」です。
想像してみてください。あなたは今、スーパーでお買い物をしています。店員さんが「これ、何の商品ですか?」と聞いても、あなたは何も答えず、ただ適当な袋に商品を突っ込んで渡しました。店員さんは中身がわからないので、それが生卵なのか、重い鉄アレイなのか判断できません。結局、店員さんは中身を確かめないままレジを通し……案の定、卵が割れて大惨事。
TypeScriptにおける「暗黙のany」は、これと同じです。「型を書かないから、中身が何かわからない。とりあえずanyにしておくね!」とTypeScriptが勝手に判断してしまう状態です。これが原因で、後からとんでもないバグが爆発するんです。
—
救世主 `noImplicitAny` の登場
そこで登場するのが、`tsconfig.json` に設定する `noImplicitAny: true` です。
これをオンにすると、TypeScriptは「中身がわからないまま勝手にanyにする」という怠慢を許さなくなります。 あなたが型を書かずに曖昧なコードを書くと、「ちょっと待って! それが何なのか、ちゃんと教えてくれないと怖くて実行できないよ!」と真っ赤な波線で警告してくれるようになるのです。
どう設定するの?
設定はとても簡単です。プロジェクトのルートにある `tsconfig.json` を開いて、このように記述するだけです。
{
“compilerOptions”: {
“noImplicitAny”: true
}
}
たったこれだけで、あなたのコードは「なんとなく動く」という状態から、「正しく定義されているから安心」という状態へ一気にレベルアップします。
—
実際に体験してみよう
例えば、次のような関数があったとします。
// 型を書いていないので、引数の「x」が何者か不明です。
// noImplicitAnyがtrueだと、ここでエラーが出ます。
function addNumbers(x, y) {
return x + y;
}
// これだと、うっかり文字列を渡してもエラーになりません。
// 結果、思わぬバグが生まれます。
console.log(addNumbers(1, “2”)); // 「12」という文字列が返ってきてしまう!
`noImplicitAny: true` にしていれば、TypeScriptは優しくこう教えてくれます。
「`x` に型がついていないよ。数字なのか文字なのか、教えてくれないと計算していいか判断できないよ」と。
では、正しく書くとどうなるでしょうか。
// 引数に「number(数値型)」であることを明示しました。
function addNumbers(x: number, y: number): number {
return x + y;
}
// これなら、もし間違った値を渡しても即座に教えてくれます。
// 「あ、ここ数字じゃないものが混じってる!」と気づけるんです。
console.log(addNumbers(1, 2)); // 3
—
つまずいても大丈夫。焦らなくていいんです
最初は「いちいち型を書くのが面倒くさい」と感じるかもしれません。でも、この「面倒くさい」は、将来あなたがバグを探して夜中に青ざめる時間を減らすための、未来への投資なんです。
もし、どうしても型がわからないときは、無理に `any` を使おうとせず、`unknown` 型を試してみてください。`unknown` は「今はまだ正体不明だけど、あとでちゃんと調べてから使うね」という、TypeScriptらしい誠実な型です。
プログラミングは、最初から完璧にできる人なんていません。エラーの赤波線は「あなたの書き方が悪い」という責め言葉ではなく、「ここを直せばもっと強くなれるよ!」という道標です。
`noImplicitAny` をオンにして、ぜひ「型のある安心感」を味わってみてください。きっと、TypeScriptがあなたの頼もしい相棒だと感じられる日がすぐにやってきますよ。
それでは、また次の記事で。ハッピー・コーディング!

コメント