TypeScript化の調査 2016年9月現在(React v15.3.1, TypeScript 2.0-rc)の話です。
いま開発しているウェブアプリのフロントエンドをTypeScript化しようと思ってちょっと調べてみたんですが、今やるのはいくらTypeScript推進派でもちょっと厳しいなと。
- TypeScriptでimportできるライブラリは、TypeScriptのコード(.ts)またはdts: TypeScript definition files (.d.ts) のみ
- Reactは素のJS + 一部FlowType なのでdtsの公式提供は期待できない
- DefinitelyTypedのdtsは手動でメンテナンスされているよう
- https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/react
- これが現在 v0.14 ベースで古い
- v15.3ベースに修正するにしても作業量が多すぎてつらい
- 仮に今がんばってv15.3ベースにしたとしても将来にわたって最新版に追従し続けるのがつらい
- つまりこの規模の大型ライブラリのdtsを手作業でメンテナンスし続けるのはつらい
将来的には、 ReactコードのほぼすべてにFlowTypeアノテーションがついてdtsがそこから自動生成されるというようにはできるだろうと思っているのですが、現状そうではないので、繰り返しになりますが現時点での導入はかなり厳しいと思います。
次のように、v15.3のランタイムとv0.14のdtsを組み合わせてなんとなく動かすことはできるんですが、たぶん茨の道だろうと思いますね…:
追記:
https://twitter.com/laco0416/status/775233772329459712
https://twitter.com/laco0416/status/775234408294912000
--allowJs でとりあえず導入みたいなのはありかもしれないですね。TypeScriptの恩恵を受けられないので素のJSよりどのくらい楽になるかはちょっとやってみないとわかりませんが。