TypeScriptのデメリットと対応策(個人見解)

今のフロントエンドではTypeScriptを使うことが普通になってきています。

型がつくということは多くの場面でバグを事前に発見することの手助けになります。

しかし、そんなTypeScriptにもデメリットがあると感じています。

コードが読みづらくなる

ずばりこれに尽きます。

人によるのでしょうが、JavaScriptに慣れてしまった自分からすると、型の情報が入ったTypeScriptのコードは重要なビジネスロジックの部分を隠します。

以下は単純な例ですが、TypeScriptの場合とJavaScriptの場合です。

const myFunc = (a: number, b: number) => a + b
const myFunc = (a, b) => a + b

関数名はあえてわかりにくいものにしています。

本当にシンプルな例なのでそこまで差はないかもしれません。

しかし、見慣れない人からするとTypeScriptのコードは、どこがロジックでどこが型の情報なのかを開発者から隠します。

型がより複雑になるとなおさらです。

型を理解するために多くの時間を費やしてしまうことは開発者にとってはデメリット以外の何者ではありません。

どうするか

このコードの可読性の悪さを回避するためのシンプルな方法は以下だと思っています。

型とロジックを分ける(特に関数)

これを上の例に適用すると以下のようになります。

type Add = (a: number, b: number) => number

const myFunc: Add = (a, b) => a + b 

コード量は増えてしまいました。

しかし、myFunc の右辺からは型が消えてロジックだけになっています。

このように分離することで、型の情報は見ないですみます。

必要な時だけ見に行くようにすればいいのです。

なんならファイルを分けてしまってもいいと思います。

まとめ

JavaScriptの良さは、コードの中にロジック以外の余計な情報がないことだと思っています。

非常にシンプルです。

しかし、それはコードの中に情報が少なすぎてあいまいになるということでもあります。

あとはバランスだと思います。

私はどちらかというとシンプルな方が好きです。