首页 > 解决方案 > 此条件将始终返回 'false',因为类型 'string' 和 'number' 没有重叠。即使有'=='

问题描述

我正在从 Angular 5 tp 10 迁移我的应用程序,迁移后我收到错误 此条件将始终返回“false”,因为“字符串”和“数字”类型没有重叠。即使在我们使用 == 而不是 === 的代码中,我是否应该知道 angular 10 的一些新配置或功能

它已经没有意义了

我知道我可以在我的号码上添加单引号,但是 == 在 html/template 中的行为类似于 === 的逻辑是什么?

为什么角度 5 没有错误? 在此处输入图像描述

标签: angularmigrationequalityangular10

解决方案


Angular 10 使用Ivy AoT进行编译。与旧的 JiT 引擎相比,它在编译时要求类型构造(包括模板中)。

艾薇刚刚通知你,条件从一开始就是错误的。如果roleId是类型,string那么它应该与类型string而不是数字进行比较。

roleId == '2'

尝试时roleId == 2,您依赖 JavascriptToNumber来隐式转换为roleId数字。关于抽象相等比较的更多细节在这里。这在使用 Ivy 和 Typescript 时效果不佳。


推荐阅读