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

Angular升级10+TypeScript4后isObject、isNullOrUndefined废弃告警如何解决

废弃告警处理方案

这两个函数原本是Angular内置工具包提供的公共方法,Angular 10配合TypeScript 4+版本迭代后正式标记为废弃,官方推荐使用原生JS/TS语法替代,具体处理方案分两种:

方案一:直接替换为原生判断(最推荐)

直接按照告警提示的规则逐处替换原有调用,无需额外封装:

  • isNullOrUndefined(value) 替换为:
    value === null || value === undefined
    
    如果团队代码规范允许使用双等判断,可简化为更短的等效写法:
    value == null
    
  • isObject(value) 替换为(注意必须先判断非null,规避typeof null === 'object'的历史遗留坑):
    value !== null && typeof value === 'object'
    

方案二:全局封装复用(适合调用量较大的项目)

如果项目中这两个函数的调用点非常多,逐处改造成本高,可以自行封装同名工具函数全局复用:

  1. 新增自定义工具文件(如src/app/utils/common.util.ts),写入以下代码:
/** 判断值是否为null或undefined */
export function isNullOrUndefined(value: unknown): value is null | undefined {
  return value === null || value === undefined;
}

/** 判断值是否为非null的对象类型 */
export function isObject(value: unknown): value is Record<string, any> {
  return value !== null && typeof value === 'object';
}
  1. 全局替换原有导入语句,把原来从Angular内置包导入的语句,替换为从自己封装的工具文件导入即可,原有调用逻辑无需修改。

注意事项

  • 不要通过关闭lint规则的方式忽略该告警,后续Angular大版本会直接移除这两个废弃API,届时会直接触发编译错误
  • 判断对象时不要省略非空判断,否则会把null值误判为对象类型

内容的提问来源于stack exchange,提问作者Aamer Shahzad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 11:45:03