使用Aurelia CLI和打字稿时随机吞咽失败

时间:2016-12-13 19:29:15

标签: typescript aurelia aurelia-cli

我正在使用Aurelia Cli,它在大多数情况下都很好用,但有一件事真的让我感到困惑。

我创建了一个新的原型扩展,如下所示:

interface Array<T> {
   remove(itemToRemove: T): Array<T>;
}

Array.prototype.remove = function (itemToRemove) {
    const index = this.indexOf(itemToRemove);
    if (index !== -1) {
        this.splice(index, 1);
    }
    return this;
}

除了保存运行au run --watch的任何文件时,此工作正常。我会在构建时遇到错误,告诉我remove不是[]上的有效方法。这是随机的,大概发生在四次中。如果我什么都没改变再保存就不会再抱怨了。

我怎么能让Aurelia一直对此感到满意?

链接到完整项目:https://github.com/4imble/StackRpg/tree/master/Client/src

1 个答案:

答案 0 :(得分:2)

您看到的问题可能是编译器没有一致地提供数组扩展源文件。很可能是因为build script is set up to only compile files if they change

首先,尝试评论.pipe(changedInPlace({firstPass: true}));并查看是否开始获得更一致的构建。

如果是这样,您可能必须更新构建脚本,以便始终将该源文件传递给编译器。类似的东西:

let dts = gulp.src(project.transpiler.dtsSource);

let src = gulp.src(project.transpiler.source)
 .pipe(changedInPlace({firstPass: true}));

let exts = gulp.src("path/to/extension.ts")

return eventStream.merge(dts, src, exts)

另外,至少在typescript 2.1中,如果我尝试设置一个数组原型,你会抱怨。可以通过以下方式解决:

(<any>Array.prototype).remove = function (...etc