grunt-typescript で型チェックエラーを無視する

バッドな感じのタイトルだけど、開発中にとりえあず型エラーが出ていてもとりえあずjsファイルを吐いてほしいときはある。

実際 tsc コマンドを打つと、syntax error のときは js を吐かないけど、型エラーのときは js を吐いている。(それが好ましいのかどうかはしらないけど。)

  • hoge.ts
class Hoge {}
var h = new Hoge();
h.hoge();

Hogeクラスにhogeメソッドなんてないので型エラーがでるけど、jsファイルはできてる。

$ tsc hoge.ts
hoge.ts(3,2): The property 'hoge' does not exist on value of type 'Hoge'
$ ls
hoge.js hoge.ts
  • hoge.js
var Hoge = (function () {
    function Hoge() { }
    return Hoge;
})();
var h = new Hoge();
h.hoge();

grunt-typescript では型エラーが出るともう js 吐かない。ちょっと動作確認だけしたいみたいなときにもちゃんと型の整合性を取る必要があるので、"型付けを後回し"にすることができない(すべきじゃないとか言われそう)


ので grunt-typescript にオプションを足してみる

diff --git a/tasks/typescript.js b/tasks/typescript.js
@@ -306,7 +306,7 @@ module.exports = function (grunt) {
             }
         });
         compiler.typeCheck();
-        if(compiler.errorReporter.hasErrors){
+        if(compiler.errorReporter.hasErrors && !options.ignoreTypeCheck){
             return false;
         }
         compiler.emit(io);

Gruntfile の typescript のオプションに ignoreTypeCheck: true を足したら型エラーが出ても js ファイル吐き出してくれた。
タスク自体は失敗になるので注意。

Backbone.jsガイドブック

Backbone.jsガイドブック