You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 23:59:51