TypeScriptってなんやねん

f:id:utouto97:20210725220659j:plain

TL;DR
TypeScriptは静的型付けなJavaScriptで、保守性向上に貢献

TypeScriptとは

TypeScriptとはなんでしょうか。

とりあえず、Wikipediaを見てみましょう。

TypeScript はマイクロソフトによって開発され、メンテナンスされているフリーでオープンソースプログラミング言語である。TypeScriptはJavaScriptに対して、省略も可能な静的型付けとクラスベースオブジェクト指向を加えた厳密なスーパーセットとなっている。
TypeScript - Wikipedia

TypeScriptとはプログラミング言語です。
Wikipediaを見る限り次のような特徴があります。

つまり、TypeScriptは静的型付けとオブジェクト指向を取り入れたJavaScriptの拡張だということです。

続いて、公式HPを見てみましょう。

www.typescriptlang.org

次のように、書かれています。

f:id:utouto97:20211203015052p:plain

"TypeScript is JavaScript with syntax for types."

"TypeScriptは、型構文をもつJavaScriptである."

ということで、やっぱりTypeScriptはJavaScriptに型を追加したものであることがわかります。

TypeScriptはオープンソースです。
GitHubリポジトリがあります。

github.com

使われている言語を見てみると、TypeScript 100%となっており、TypeScript自体がTypeScriptで書かれていることが確認できます。

f:id:utouto97:20211203015553p:plain

TypeScriptはコンパイラ!?

TypeScriptは型構文をもつJavaScriptであるということはわかりました。
では、TypeScriptはどのように実行するのでしょうか。
JavaScriptの場合は、ブラウザやNode.jsが実行します。
それは、各ブラウザはJavaScriptを実行できるようになっているからです。
(バージョンの話とかありますが割愛)

TypeScriptの実装は、TypeScriptからJavaScriptへのコンパイラとなっています。
つまり、TypeScriptで書かれたプログラムは、コンパイルされてJavaScriptへと変換されます。
そして、変換されたJavaScriptがブラウザやNode.jsで実行されます。

TypeScriptコンパイラはそのコンパイル時に、型チェックやエラーチェックを行います。
これにより、明らかなエラーを先に見つけることができます。
例えば、JavaScriptの場合、実行時にエラーとなるため、次のようなエラーが続発することがあります。

Uncaught TypeError: Cannot read property *** of undefined

TypeScriptを利用している場合、コンパイル時にこのようなエラーを見つけることができます。

どうしてTypeScriptが必要?

JavaScriptに変換されるのに、どうしてTypeScriptを使うのでしょうか。

主な理由は、保守性を高めることができるから、です。

TypeScriptは、静的型付け言語でコンパイル時に、型チェック・エラーチェックが行われます。
先に述べたUncaught TypeError: Cannot read property *** of undefinedのようなエラーもコンパイル時にわかります。
これにより保守性を高めることができます。

また、コードを読むときにも、型が分かっているほうが読みやすいです。
動的型付けだと、実行時にコンピュータが自動で型を判断してくれます。
ただし、コーディングしてるときは、エンジニアが脳内で型を判断しながらコードを読む必要があります。
そのため、静的型付けで型がはっきりと書かれているとコードが読みやすくなります。

ほかにも、TypeScriptを使っていると、VSCodeなどのエディタの入力補完が協力になります。
JavaScriptを書いているときよりも、TypeScriptを書いているほうが強力な入力補完を使うことができ、タイポを減らしたり、楽にコーディングが可能になります。