我在哪里可以找到我的Angular 2 CLI TypeScript错误?

时间:2017-03-27 15:41:45

标签: angular typescript compiler-errors type-conversion angular-cli

所以,我刚刚将Angular CLI项目升级到最新版本。

Angular CLI现在是1.0.0,@ angular / common是4.0.0

在编译以前工作的项目(使用ng build)后,我收到了许多错误,如下所示:

C:/tools/myproject/src/$$_gendir/app/modules/wp-components/wp-components.component.ngfactory.ts (1207,11): Type 'number | true' is not assignable to type 'boolean'.
      Type 'number' is not assignable to type 'boolean'.

我或许可以解决此类型相关的错误,但我不知道在哪里找到...

我猜C:/tools/myproject/src/app/modules/wp-components/wp-components.component.tsC:/tools/myproject/src/$$_gendir/app/modules/wp-components/wp-components.component.ngfactory.ts的原始版本(在错误消息中列出)。

我的问题是:

此文件有225行。错误消息中的此坐标是什么:(1207,11)

如果您有解决此问题的方法,也欢迎使用。 ; - )

提前谢谢你们!

1 个答案:

答案 0 :(得分:3)

升级Angular CLI时出现同样的问题。

问题:

它的来源是合乎逻辑的,但我只是没有想到它。

在我的情况下,我有一个键入的自定义Type参数或变量作为字符串或数字,但是我已经在没有运算符的if条件下使用它来检查它是否为空。

例如:

export class ExampleType {
   id: number,
   title: string
}

if(!ExampleType.id) {
    // this will produce an error because ExampleType.id
    // is used as a boolean in this case
}

而像这样使用它将消除错误:

if(ExampleType.id < 1) {
    // this works
}

了解调试信息:

据我所知,这些数字没有意义,但文件名似乎是上述案例之一的首次出现。因此,如果您收到错误,只需在此文件中搜索可能使用上述参数的if / switch条件并更改它们以使用正确的比较运算符,然后查看再次运行后出现的下一个文件名。 注意:您必须检查component.ts以及component.html文件,因为它还会影响模板文件中的ngIfs。

提示找到错误的属性:

调试消息不提供任何属性是错误源的信息。我的解决方案是将我的自定义类型中的每个属性更改为&#34;任何&#34;然后逐个更改它以查看错误重新开始的位置。 (也许这有帮助)