TS4.9.3+Angular15中isEmpty函数对象/数组全等判断提示解析
关于TypeScript中对象/数组全等判断提示的解释
这个提示的核心意思是:JavaScript/TypeScript里用===比较对象(包括数组,因为数组属于对象类型)时,是按内存引用地址比对,不是按内容比对。
具体来说:
- 你写的
value === {}是把传入的value和一个临时创建的空对象做全等判断。这个临时空对象在内存里有独立的引用地址,哪怕传入的value本身是空对象,它的引用地址也和临时创建的{}不一样,所以这个条件永远会返回false。 - 同理,
value === []是拿传入的数组和临时创建的空数组比对,两者的引用地址必然不同,所以这个条件也永远返回false。TypeScript检测到这两个条件完全无效,就会给出这个提示。
如果要正确判断空数组和空对象,可以改成下面的写法:
static isEmpty(value: any): boolean { // 先判断null/undefined if (value === null || value === undefined) { return true; } // 判断空数组 if (Array.isArray(value) && value.length === 0) { return true; } // 判断空对象(注意排除null,因为typeof null会返回'object') if (typeof value === 'object' && value !== null && Object.keys(value).length === 0) { return true; } // 其他情况都不是空值 return false; }
内容的提问来源于stack exchange,提问作者Midhun
相关产品推荐
相关产品推荐

