请考虑以下TypeScript代码示例.
var checkEqual = function (a:any,b:any) { if(a == null) { return false; } }
当我编译它时,它将生成相应的JavaScript文件而没有任何编译时错误,如下所示:
var checkEqual = function (a,b) { if (a == null) { return false; } };
但是当我在编译的JavaScript代码/文件上运行JSHint时,我会有以下错误/警告:
Use === to compare with null
我希望TypeScript中编译的JavaScript代码与JSHint兼容(不存在任何错误和警告).这意味着要么它应该生成正确的代码,要么它应该给出编译时错误.
PS:之前我不知道tslint,但即使在使用它之后,它也没有编译与JSHint兼容的JavaScript(JSHint仍在抛出警告).
解决方法
这根本不可能!从来没有构建TypeScript,目的是创建符合linter的代码.使用TypeScript时,您必须将生成的JavaScript视为字节码.没有理由查看你的字节码.
有些麻烦甚至可能会使用这个有问题的麻烦.事实上,在ES5中应该非常谨慎地使用它.但是当使用TypeScript / ES2015类定义时,你需要经常使用它,并且转换到ES5会创建很多它们.因此,创建与您的linter匹配的代码将迫使您不使用TypeScript的许多功能.
所以如果你想要lint字节码,那么你应该写字节码;)