在编译我的代码时,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));

10-06 12:26