はじめに
実務でTypeScriptを記術していて、どんな仕組みで動いているのか?気になり、それを軽く整理しようと思う。
※この記事は、以下の書籍から引用しています
TypeScriptの仕組みについて
そのそも、プログラムはコンパイラーで解析される。コンパイラーはAST(抽象構文木)に変換します。
【流れ】
- プログラムがAST(抽象構文木)へと解析される
- AST(抽象構文木)がバイトコードにコンパイルされる
- バイトコードがライタイムによって評価される
TypeScript唯一性とはなにか?
TypeScriptは、バイトコードへと直接コンパイルされる代わりに、JavaScriptコードへとコンパイルされる。そこが他の言語とは異なるところとしている。
🤔TypeScriptの型チェックってどのタイミングで実施しているの?
typescriptはコンパイラーが、ASTを生成したあとJavaScriptを出力する前に型チェックを実施する。
出力する前に型をチェックしてくれるところがみそになっていそう。静的に解析できるところが、いいところ。
現場でTypeScriptを使って感じたこと
規模感の大きなアプリケーションのプロダクト開発を実施する場合、たくさんのファイルをいじることになる。JavaScript(ここでは動的な言語として使う)だと暗黙的に型を変換されてしまい、どこで問題が起きるのかデバックするのが困難になってくる。実行されるまでどこにどんなエラーが出現するのかがわからなくなる。
お客様にエラーの状態でプロダクトを提供するのはリスク。
そんなときに明示的な構文を使って、すべての型をコンパイラーに伝える必要がある。また自動的に推論してくれることでそのエラーに対して手を打つことができるということ。
コードをかいていて、ここはエディター上で赤文字エラーがいっぱい出ると不安になるが、この機能が機能してくれることで、すくなくとも勝手に型が変換されてしまっているという可能性を潰せるのが大きなメリットだなと感じている。
おわりに
好きな言語はとことんつきつめればいいと思うが、実務となるとまた異なるのかな。大きなサービスや複数ファイル複雑なコードを管理するに静的型付けする言語が好まれる傾向が強いと感じました。