noImplicitAny
noImplicitAny
は暗黙のany型を禁止するコンパイラオプションです。
- デフォルト: strictが有効の場合は
true
、それ以外はfalse
- 追加されたバージョン: -
- TypeScript公式が有効化推奨
暗黙のanyの問題点
型注釈もなく型推論もできない場合、TypeScriptは変数の型をany
にします。これを暗黙のanyといいます。特に引数やプロパティで暗黙のanyになることが多いです。
暗黙のanyが発生する例ts
functionfoo (param ) {}classBar {privateprop ;}
暗黙のanyが発生する例ts
functionfoo (param ) {}classBar {privateprop ;}
any型の変数には型チェックが無いため、バグの危険性が増します。
ts
functionincrement (number ) {console .log (number + 1);}increment ("1");increment (undefined );
ts
functionincrement (number ) {console .log (number + 1);}increment ("1");increment (undefined );
noImplicitAny
で暗黙のanyを防ぐ
noImplicitAny
をtrue
にすると、変数が暗黙のanyになることを避けられます。TypeScriptは暗黙のanyになる変数を見つけると、警告を出すようになります。
暗黙のanyが警告される例ts
functionParameter 'param' implicitly has an 'any' type.7006Parameter 'param' implicitly has an 'any' type.foo () {} param classBar {privateMember 'prop' implicitly has an 'any' type.7008Member 'prop' implicitly has an 'any' type.; prop }
暗黙のanyが警告される例ts
functionParameter 'param' implicitly has an 'any' type.7006Parameter 'param' implicitly has an 'any' type.foo () {} param classBar {privateMember 'prop' implicitly has an 'any' type.7008Member 'prop' implicitly has an 'any' type.; prop }
関数の戻り値の型
関数の戻り値の型は型注釈がなくても、TypeScriptが型推論可能なため暗黙のanyにはなりません。したがって、型注釈の無い戻り値は、noImplicitAny
を有効にしても警告は出ません。
ts
functionfoo () {return 1;}
ts
functionfoo () {return 1;}
戻り値の型注釈を必須にしたい場合は、noImplicitReturns
を有効にしてください。
学びをシェアする
😢TypeScriptは型注釈がないOR型推論不能の場合、型をanyにする(暗黙のany)
🙅♂️noImplicitAnyは暗黙のanyを禁止するコンパイラオプション
😊これをtrueにすると暗黙のanyが警告される
✅有効化推奨のオプション
『サバイバルTypeScript』より
関連情報
📄️ strict
strict系のオプションを一括で有効化する
📄️ any型
TypeScriptのany型は、どんな型でも代入を許す型です。プリミティブ型であれオブジェクトであれ何を代入してもエラーになりません。
📄️ 関数宣言
関数宣言はJavaScriptで関数を定義する構文です。
📄️ フィールド
JavaScriptでインスタンスにフィールドを持たせるには、インスタンス化したオブジェクトのプロパティに値を代入します。