Angular 14升级至16后ng serve报TS2839错误如何解决?
Angular 14升级至16后ng serve出现TS2839错误的解决方法
错误详情
Error: src/app/paginas/descripcion/descripcion.component.ts:1084:46 - error TS2839: This condition will always return 'true' since JavaScript compares objects by reference, not value.
1084 if (data != undefined || data != []) {
错误原因
Angular 16配套的TypeScript版本语法检测更严格。问题出在data != []这个判断:JavaScript/TypeScript中数组属于对象,对象比较是按引用而非值,[]每次都是创建新的数组实例,和data的引用永远不相等,所以data != []永远为true。再结合||逻辑或,整个条件表达式永远成立,属于无效判断。
修复方案
根据业务需求修正判断逻辑:
- 如果需要判断
data既不是undefined也不是空数组,将逻辑或||改为逻辑与&&,同时用数组长度判断是否为空:if (data !== undefined && data.length > 0) { // 执行业务逻辑 } - 若
data可能为null,可以补充判断并使用可选链简化写法:if (data?.length) { // 执行业务逻辑 }
内容的提问来源于stack exchange,提问作者sistemas13
相关产品推荐
相关产品推荐

