在编译我的代码时,Type Script在每个文件的顶部都包含一个扩展名:
var __extends = this.__extends || function (d, b) {
/* istanbul ignore next */
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
__.prototype = b.prototype;
d.prototype = new __();
};
这在幕后工作得很好,但在使用业力覆盖来生成报告时会造成不一致。这个声明包含两个函数调用和一个代码中的一个分支,这个用法只在第一个声明中被执行,留下了几十个(如果不是几百个)的后续声明,其中没有覆盖。这使得一个代码覆盖率为100%的文件在覆盖率报告中看起来很难被覆盖。
有人解决了这个问题吗?
最佳答案
从2.1开始,typescript支持外部helper库,所有发出的函数都转到tslib
包
npm install --save tslib
更改tsconfig:
{
"compilerOptions": {
//all the other stuff
"importHelpers": true
}
}
如果需要,typescript将自动导入
tslib
包例如下面的例子
var tslib_1 = require("tslib");
var MyClass = (function (_super) {
tslib_1.__extends(MyClass, _super);
function MyClass() {
return _super !== null && _super.apply(this, arguments) || this;
}
return MyClass;
}(controller_1.Controller));