一、Typescript中 null || undefined 的返回值是什么?
在 TypeScript 中,表达式 null || undefined
的返回值是 undefined
。
原因:这是因为在使用逻辑或 (||
) 操作符时,如果左边的操作数是 null
、undefined
、false
、0
、NaN
或空字符串 (""
),那么它会被视为“假”值(false),这时逻辑或操作符会返回右边的操作数。在这个例子中,左边是 null
,这是一个假值,所以运算会继续检查右边的值 undefined
并最终返回 undefined
。
简单来说:
null
被认为是一个 false 值。- 当
null
作为||
左侧的操作数时,由于它是 false,因此||
会尝试返回右侧的值。 - 右侧的值为
undefined
,这也是一个 false 值,但根据||
的规则,即使右侧也是 false,它也会被直接返回。
二、在Typescript中 null
、undefined
、false
、0
、NaN
或空字符串 (""
),那么它会被视为“假”值(false)
三、Typescript中的Object.keys
在 TypeScript 中,Object.keys
是一个非常有用的方法,它用于获取对象所有可枚举属性的键名,并将这些键名以数组的形式返回。这个方法对于处理对象数据、进行属性迭代等场景非常有帮助。下面是 Object.keys
的使用方法及其一些常见应用场景
1、基本用法
Object.keys
接受一个对象作为参数,并返回一个字符串数组,该数组包含了给定对象自身的所有可枚举属性的名称(包括继承自原型链上的属性,如果它们是可枚举的话)。
const obj = { a: 1, b: 2, c: 3 };console.log(Object.keys(obj)); // 输出: ['a', 'b', 'c']
注意事项:
- 只会返回对象自身的可枚举属性。
- 不包括不可枚举属性和继承来的属性(除非这些属性被设置为可枚举)。
- 如果传递的不是一个对象,则会先尝试将其转换成对象。如果转换失败或者结果是一个原始值,则抛出 TypeError。
2、实际应用示例
(1)遍历对象的所有键值对
如果你想要遍历一个对象的所有键值对,可以结合 Object.keys
和 Array.prototype.forEach
来实现:
const person = { name: "Alice", age: 25, city: "New York" };Object.keys(person).forEach(key => {console.log(`${key}: ${person[key]}`);});// 输出:// name: Alice// age: 25// city: New York
(2)检查对象是否为空
有时候我们需要检查一个对象是否为空,即没有任何自己的属性。这可以通过判断 Object.keys
返回数组的长度来完成:
function isEmpty(obj: object): boolean {return Object.keys(obj).length === 0;}console.log(isEmpty({})); // trueconsole.log(isEmpty({ key: 'value' })); // false
(3)将对象转换成键值对数组
有时可能需要将对象转化为键值对形式的数组,这样方便于某些操作如排序等:
const data = { apple: 10, banana: 20, cherry: 5 };const entries = Object.keys(data).map(key => [key, data[key]]);console.log(entries); // 输出: [['apple', 10], ['banana', 20], ['cherry', 5]]