去年から絶対TypeScript勉強するぞと思っていたのですが、全然触れずにいました。
最近はAngularやES6の記述を覚えることができて、ようやくTypeScriptを覚える余裕ができてきました。
実際に学び・使ってみた感触を本記事でご紹介します。
TypeScriptをなぜ学ぼうと思ったか
私がフロントエンド中心で今後スキルを伸ばしたいと思っているのが前提なのですが、様々な開発現場でTypeScriptが導入されているのを目の当たりしてきたのしているので「覚えないと開発にすら参加させてもらえない」「足を引っ張る」といった焦りから覚えました。
これは「ES6」や「Angular,Vue,React」といったJSフレームワークを学ぶきっかけも同様でした。
ほかにも知人からはTypeScriptを扱うとエディターで型や引数名が同期されるので初心者こそ覚えたほうがコードを書きやすくなると進められたのもあります。
TypeScriptの恩恵とメリット
TypeScriptは型を決めれるとだけ聞いてたのですが、それがどういうメリットなのかは使って見るまでわかりませんでした。
TypeScriptを使いだして気がついたメリットは以下になります。
型を指定することでコードが読みやすくなる
2週間前に自分が書いたコードなんて私は覚えてないので信用できないです。
しかし引数や関数に型を定義しておけば何が返ってくるのか、何が入るのかが予測でき当初想定していなかった使い方をすることができなくなり、気が付かないバグの発生を未然に防ぐことができます。
エディターの入力補完が強い
APIを使うときなど、メソッド名を忘れることもありますが、エディターがそのあたりを補完してくれるのでスペルミスなどで時間を浪費することがなくなります。
また、引数名とその型も取ってきてくれるので予想がしやすいです。
リファクタリングしやすい
型定義がしっかりされていると似たような関数をまとめるときにめちゃくちゃやりやすかったです。
仮にリファクタリングに失敗してもエラーを出してくれるので、目視で調査するよりは品質を担保できます。
簡易のドキュメントとして扱える
大人数での開発のときに特に役立つのが、型定義です。
これを行っておくと他の人が作った関数の使い方も予想がしやすく、再利用がしやすくなります。
anyのように何でも入る型で書いてあればそういう受け入れで書かれた関数と受け取れるので、コメントアウトでは確認しにくい情報も明示的にとれます。
またTypeScriptで書く以上型の書き方は決まっているので、みんな同じ書き方で品質の担保もしやすいです。
そもそも型を書かないとエラーが出るので強制的にコードの品質を上げることができます。
情報をキャッチアップしてる人と開発できる
TypeScriptは規格としては新しいですが、それなりに年月も経っており多くのエンジニアが利用しています。
昔覚えた技術ばかりで書く人やコピペでしか書けないエンジニアなど開発スキルで人を間引くことができます。
言い方は悪いですが、必要な情報をキャッチアップしてスキルに落とし込んでる人はそれなりに信用できるので、開発もしやすくなります。
TypeScriptは必須なのか
TypeScriptは必須で使わないといけないものではないと思っています。
理由としては、型を定義するなど考えることが増えるので、単純に動くものを作るだけならコストが高いとも言えます。
しかし運用や更新を少しでも考えられている場合はTypeScriptで書いた方がその恩恵を得やすくなります。
またTypeScriptを全く知らないチームにいきなり使えと強制してもパフォーマンスが下がるだけなので得策ではないでしょう。
同様に古い環境にいきなりTypeScriptを導入してもエラーの連続になるのでリファクタリングだけで多大な工数をとるのでこれもオススメしないです。
私としては、TypeScriptは個人・またはチームで新規運用開発する場合は導入するメリットのほうが大きいと思っているので、必須の気持ちが強いです。
最近はJavaScriptフレームワークでTypeScriptを使ってるので半強制的に求められるようにも見えますが。
TypeScriptに期待していること
TypeScriptの型定義はフロントエンドに限りません。
Node.jsのようなバックエンド環境でも扱えます。
つまりこれまでのように、php,Rubyでも型をチェックしてフロントでも同じことを別言語で行うような世界をなくすことができます。
それが可能なのはNest.jsのようなライブラリですね。
私はまだ、バックエンド方面に手を出していないのですが、いずれは覚えるつもりでそのときにTypeScriptの恩恵を得れると思うとワクワクします。
最後に
これからもTypeScriptの需要は伸び続けるので覚える事は疑う余地がありません。
使わない選択肢は合っても覚えない選択肢は、自分が活躍できる場を狭めるだけと予想しています。
まだまだ私も覚えて日が浅いので偉そうな事は言えないのですが、新しいことを覚えるのではなく、必要なことを覚えるスタンスを大事にして成長していきたいと思います(ゝω・)