はじめに
ずっと、RubyとかPHP、JavaScriptで生きてきたので、2~3年前は、TypeScriptってちょっとハードルが高いように感じてました。
でも、実際やってみるとそんなにハードルってないよ。
メリットしかないといっても過言ではないなと思います。
TypeScriptってどんなもの?
TypeScriptのドキュメントには
TypeScript is JavaScript with syntax for types.
と書かれてます。
TypeScriptってただのJavaScriptに型という拡張構文を追加したに過ぎないんですね。
TypeScriptのメリット
JavaScriptはとても曖昧で自由な言語です。
これがJavaScriptの魅力であるというとそうなのですが、自由というのは無秩序を生みます。
そこに型を加えることでいいことが2つあります。
1. 不具合を減らせる
なんとなく想像できると思うので、説明は不要かと思います。
undefinedやnullが入る余地があるのか、Numberなのか、Stringなのか、Booleanなのか。
入りうる値に自由度がある状態だとif文一つ書くのが怖いんです。
型があることでちゃんと何を担保すべきで何を担保しなくてもいいのかがはっきりします。
2. コードリーディングが速くなる
自分がコードを書く時間より、そのコードが何年も残ってくることを考えると、読み人の方が多いんです。
書きやすさ < 読みやすさ
この正体は何なのか?後世へのドキュメントを書いているようなつもりで書くといいと思います。
3. コードを書くスピードが速くなる
記述量が増えるんだからスピードは遅くなるでしょ。
と思いがちですが、それは違います。
IDEの時代、優秀なIntellisenseやがTypeScriptを使うことで最強となります。
これは確実に記述スピードを上げてくれます。
TypeScriptのデメリットとそれに対しての答え
とはいえ、TypeScriptを使ったことによる弊害あるんでしょ?
と思われる方もいらっしゃるかと思います。
正直なところ、0ではないです。でも限りなく0に近いです。
トランスパイル
いわゆる、TypeScriptを解釈し、古いJavaScriptに変換する処理ですね。
これが障壁になることが結構多いかと思います。
新しいツールを入れるのは導入ハードルがあるのはわかります。
ただ、2022年現在、かなり楽になっています。
webpack × babel
というツールが主戦力かと思いますが、他にもesbuild
やwebpack × swc
など選択肢の幅はどんどん広がっていますし、楽にもなっていっています。
メンテナンスフリーとはいきませんが、一度ある程度勉強してしまえば広がる世界はかなり広いです。
構文を覚える
TypeScriptの構文を覚えるのが大変でしょ?という疑問あると思います。
あるっちゃありますが、すぐになれますよ。
あくまでも型というものを提供しているだけなので、
type User = {
name: string;
email: string;
age: number;
}
の意味がわかればほぼ大丈夫です。
あとは難しそうに見えるのはジェネリクスぐらいですかね?
これは、必要になった時に勉強すればいいと思います。
出てくるシーンは共通化
したいシーンです。
関数を共通化したい時に、変数や返り値の型を動的にしたい時が出てくるんです。
その時に学べばいいので、このためだけに導入を見送るのは勿体無いと多います。
まとめ
今回は、TypeScriptを使って欲しいなと思い、記事にしてみました。
ハードルに感じているのであれば、ハードルなんかよりメリットの方が大きいよというのを使ってもらえれば感じられると思います。