【JS】あえてTypeScriptの短所を探す
こんにちは!TypeScriptってめっちゃ言いにくいですね。Mizutani(@sirycity)です。タイッスクップリプト
そんな当たり前のように昨今使われるTypeScriptですが、フロントエンドエンジニアのみんなが長所ばかりを書くのであえて短所を書きたくなりました。様々な理由によりTypeScriptを使えない方もいらっしゃるでしょう。今回は中々語られることのないTypeScriptの短所について考えてみました。
※半分ネタです。
はじめに
これを見ているフロントエンドにそこまで詳しくない方々へ。
2020年現在、TypeScriptは採用しない理由がないレベルです。採用しましょう。もう最初は全部中身JSのままでも良いです。無理して型書かなくて良いです。採用しましょう。
でも今回はTypeScriptの短所を書いていきます。そういう記事だからな。
開発者人口が少ない
おそらくこれが最大の理由。JSを使える人の方がTSを使える人より遥かに多いです。実際TSの方が便利でも、TS使える人がいなかったら何ともならないっす。勿論この先TS人口は増えていくとは思いますが、JSを上回ることはないでしょう。
時間がかかる
当然だけど、TS→JSはトランスパイル(変換)が必要です。tscとかbabelとかwebpackとかで変換するんですが、その辺りのセッティングが必要です。こういう設定モダンフロントエンドフレームワークだとそんな時間かかんないんだけど、ちょっとレガシーな構成の上に構築したりすると難易度爆上げです。
あと、当然ビルド時間が増えます(微々たる差だけどね)。
学習コストがかかる
TSはJSとめっちゃ似ているし、JSのコードそのままでもよっぽど動きます。でもTSにすることで動かないコードとかも稀にあるし、TSの設定ファイル(.tsconfig.json)次第ではもっと大量のエラーに苛まれます。んでその.tsconfig.jsonの設定はめっちゃ複雑です。ここまで学習コストを割けない開発チームも多いんじゃないでしょうか?
(個人的にはtsconfigなんか最初は適っ当でいいから移行すべきだと思います)
長い
TSはJS+型情報なので、当然コードは長くなります。JSに慣れた人は見にくいかも。タイプ量も増えます。ぶっちゃけ少々長くなろうがTSの方が分かりやすい…はずなんだけど、この辺は人それぞれだよね。
pipelineoperatorが使えない
これは結構まともな理由。JSの将来搭載される予定の機能にpipeline operatorっていうえぐいくらい便利な演算子があるのですが、現状JSはBabelを挟んで使えるのに対しTSで使う方法はありません。
まあpipelineoperatorはまだ仕様が固まってないってのもありますし、いずれTSも対応するでしょうから時間が解決してくれる内容ではあるね。
他のAltJSが使えない
Elmとかcoffeescriptとかを既に使っている場合は当然TSは入れれないです。あとはScala.jsとか。ひょっとしたらもう少し経つとHegelとか来るかも。もしFacebookに就職したら、Flowとかにも会えるかもね。
JavaScriptライブラリを使うのが面倒
TSには型情報を記したd.tsってファイルがあるんですが、JSには勿論こんなファイルないです。JSで書かれたライブラリをTSから読み込もうとすると**型情報がないぞ!**ってなって、少し手間がかかります。とはいえ著名なライブラリは大抵あるけどね。
結論
TS使おう。設定とかは適当でも大丈夫(3回目)。使ってみよ。