Angular升级10+TypeScript4后isObject、isNullOrUndefined废弃告警如何解决
废弃告警处理方案
这两个函数原本是Angular内置工具包提供的公共方法,Angular 10配合TypeScript 4+版本迭代后正式标记为废弃,官方推荐使用原生JS/TS语法替代,具体处理方案分两种:
方案一:直接替换为原生判断(最推荐)
直接按照告警提示的规则逐处替换原有调用,无需额外封装:
isNullOrUndefined(value)替换为:
如果团队代码规范允许使用双等判断,可简化为更短的等效写法:value === null || value === undefinedvalue == nullisObject(value)替换为(注意必须先判断非null,规避typeof null === 'object'的历史遗留坑):value !== null && typeof value === 'object'
方案二:全局封装复用(适合调用量较大的项目)
如果项目中这两个函数的调用点非常多,逐处改造成本高,可以自行封装同名工具函数全局复用:
- 新增自定义工具文件(如
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'; }
- 全局替换原有导入语句,把原来从Angular内置包导入的语句,替换为从自己封装的工具文件导入即可,原有调用逻辑无需修改。
注意事项
- 不要通过关闭lint规则的方式忽略该告警,后续Angular大版本会直接移除这两个废弃API,届时会直接触发编译错误
- 判断对象时不要省略非空判断,否则会把null值误判为对象类型
内容的提问来源于stack exchange,提问作者Aamer Shahzad
相关产品推荐
相关产品推荐

