2016-07-12 Koa と TypeScript 2.0 beta をためした
旅行前の 2016-06-22 に koajs/koa の core っぽい部分を理解した。……はずだったのだけど、今日 bouzuya/alertwil のためにいざ書こうとするとよく分からなくて困った。旅行のごたごたで 2 週間の空白もあるし、もともと周辺の npm package を調べていないせいもある。
routing には alexmingoia/koa-router を使うつもりだ。 koajs/route という simple な router もあるのだけど、避けることにした。理由は koa-route の機能不足ではなく singleton になっている部分が気持ち悪いので避けた形だ。npm package は singleton を避けるべきだと思っている。 function / constructor などで複数の instance を作成できるようにすべきだと思っている。単一には利用者側ですれば良いだろう。
view には何も使わないつもりだ。tj/co-views を使うこともできるが使わない。co-views は tj/co-render と tj/consolidate.js を内部に使い template engine やその compiled view の cache を管理する。今回は json と twiml 。それも定型的なものだ。個別 file での view も不要だと思うので、あえて避けることにした。
あと TypeScript 2.0 beta をためしてみたのだけど、VS Code 側の対応が良くないのでやめた。具体的には VS Code 側での auto build で string | null | undefined
などの 2.0 では正しい記述が Error になってしまう。typescript.tsserver.experimentalAutoBuild
を有効にすると Error にならないのだけど、代わりにその他の箇所も含めて保存時に型検査されなくなる。明示的に Reload TypeScript Project
すると検査してくれるのだけど、それはあんまりだ。まだ時期尚早ということだろう。VS Code の 8 月の update くらいには TypeScript 2.0 を本格的に使っていけると信じている。
追記1: Koa の Middeware は Home · koajs/koa Wiki を見ると分かりやすい。
追記2: typescript.tsdk
を ./node_modules/typescript/lib
と指定すればうまく動く (lib
は global のものでも良い) 。ただし include
はぼくの Macbook Air (Mac OS X) では動かない。Windows でうまく動いたという話を聞いた。