LoginSignup
8
4

【TypeScript】any型についてわかったこと【初心者向け】

Last updated at Posted at 2024-01-31

はじめに

皆さんTypeScriptのany型についてどの程度知っていますか?

私は開発にTypeScriptをよく使用します。
しかし、一般的に「any型を使用することは敗北である!」と言われることが多いので、正直なところany型には良い印象を持っていません。

実際、私はエンジニアとして、日々の開発業務においてany型を使用することを極力避けています。
インターフェースの定義や型のチェックには常に注意を払い、正確な型付けを心掛けています。
any型を見つけた際には、適切な型を特定するために尽力しています。
しかし、今までany型について深く調査したことはありませんでした。そこで、今回any型について改めて調査し、得られた知見を以下にまとめます。

any型とは

TypeScriptはしばしばJavaScriptのスーパーセットと表現されます。
TypeScriptには独自の概念や型がいくつか存在し、その中に「any型」があります。簡単に言うと、any型は型チェックを無効にする特別な型です。

TypeScriptは、コンパイルに成功することでJavaScriptコードに変換されます。
しかし、any型を使用すると、その変数に対する型チェックが行われなくなります。
結果として、基本的にコンパイルエラーが発生しない状況が生じます。

any型を使用することは、型安全性を確保するというTypeScriptの主要な恩恵を受けることを放棄するといえるでしょう。
型安全性は、実行時エラーのリスクを減らし、開発者によるコードの理解を促進する重要な要素です。
したがって、any型を使用することは、型安全性の確保することを放棄し、JavaScriptのような動的型付けの振る舞いに戻ることを意味します。

『プロを目指すためのTypeScript入門』という書籍では、TypeScriptにおける「any型」について、以下のように述べています

TypeScriptで最も危険な機能として位置付けられている。
any型を使用は非常に困難であり、避けるべきである。

これはany型がTypeScriptの型システムにおいて特異な位置を占めていることを示しています。
any型を使用することは、型安全性を損なう可能性が高く、結果としてデバッグや保守が困難になる可能性があります。
そのため、多くのTypeScript開発者は、必要な場合を除いてany型を使用を避けることを推奨しています。

また、私は開発にVSCodeを使用していますが、any型を使うと型の補完機能が働かず、オブジェクトのプロパティが確認できないため、都度コンソール上にログを出力して確認をしています。 こういった作業が頻繁に発生する場合、作業効率化の低下を招くと感じています。

any型を使用するデメリット

  • TypeScriptの主要な利点である型安全性が損失、実行時エラーのリスクの増加
  • VSCodeなどのIDE上で型情報の補完が不可能なため開発効率の低下、リファクタリングやデバッグが困難になる

ではどういった場合にany型を使用することが有効なのでしょうか?

any型を使用するメリット

  • 型が不明確な外部ライブラリやAPIの利用時

any型は型システムの制約を無効化することができるため、型情報がない外部ライブラリやAPIからのデータを扱う際に柔軟な対応が可能になる。これにより、既存のJavaScriptライブラリやAPIとの互換性を保ちつつ、TypeScriptの恩恵を享受することができる

  • JavaScriptからTypeScriptへのコード移行時

既存のJavaScriptコードをTypeScriptに移行する際には有効である。
型チェックを無効化することにより、即座にTypeScriptの利点を享受しつつ、段階的に型を厳格化していくことができ、大規模なコードベースの移行を容易することができる。

まとめ

ここまでany型を使用することのデメリット、メリットをまとめました。
any型はほとんどのケースでは、使用によるデメリットが大きいが一部のケースでは有効なアプローチであることがわかりました。
今後も基本的にany型を使用しないという、姿勢は変わりませんが、本当に必要な時に適切に使用するための知識を身に着けて置くことは非常に重要だと感じました。

any型だけでなく、実務で普段から使用している技術についても、理解度を見直し、深く理解することの重要性を再認識しました。
TypeScriptは今後も業務で使い続ける予定なので、気になる箇所があれば都度調査し、まとめていきます。

参考文献

8
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4