编译打字稿时未初始化变量的不太严格的模式

时间:2019-04-04 16:05:21

标签: angular typescript angular-cli

我使用了angular-cli的一个分支,该分支可以编译多个模块https://www.npmjs.com/package/hydra-ngtools-webpack一切都按预期在aot中工作,但是当我在JIT中进行编译时,我得到一个错误..

  

无法读取未定义的推送

我在@ ngtools / webpack文件夹下的angular_compiler_plugin.js中将此错误跟踪到此行。如您所见,没有为lazyRoutes赋予初始值。

_listLazyRoutesFromProgram() {
    let lazyRoutes;
    if (this._JitMode) {
        if (!this.entryModule) {
            return {};
        }
        const ngProgram = compiler_cli_1.createProgram({
            rootNames: this._rootNames,
            options: Object.assign({}, this._compilerOptions, { genDir: '', collectAllErrors: true }),
            host: this._compilerHost,
        });
        this.entryModule.forEach((entryModule) => {
            ngProgram.listLazyRoutes(entryModule.path + '#' + entryModule.className).forEach((lazyRoute) => {
                lazyRoutes.push(lazyRoute);
            });
        });
    }

如果我这样初始化它

let lazyRoutes=[];

该编译没有错误。我已联系作者以获取此软件包以获取此回购的来源,因此我可以提出请求请求,但仍在等待他的来信。有没有一种方法可以告诉编译器不要抱怨这个未初始化的变量并且可以原谅。否则,在每次npm安装时我都必须编辑此行,这并不理想。

1 个答案:

答案 0 :(得分:0)

您可以为TS Lintt添加禁用语句,如下所示:

_listLazyRoutesFromProgram() {
    // tslint:disable-next-line:RULENAME
    let lazyRoutes;
    if (this._JitMode)
    ...

您仍然必须将其添加到代码中,因此可能并不能为您节省很多。