输出结果没有gender
时间: 2023-12-29 13:03:24 浏览: 70
感谢指出,这是因为 `Object.keys()` 函数只会返回对象中自身拥有的可枚举属性(不包括继承的属性),而 `gender` 属性是在 `Person` 类型中定义的,不是在 `person` 对象上声明的属性,因此 `Object.keys()` 函数不会返回 `gender` 属性名。
如果您想遍历一个 TypeScript 对象或类型的所有属性名,包括未赋值的属性名,可以使用 `for...in` 循环来遍历对象的所有属性名,包括继承的属性。示例代码如下:
```typescript
type Person = {
name: string;
age: number;
gender?: string;
};
function printPersonProps(person: Person) {
for (const prop in person) {
console.log(prop);
}
}
const person: Person = { name: "张三", age: 18 };
printPersonProps(person);
```
在上面的示例中,我们使用 `for...in` 循环遍历了 `person` 对象的所有属性名,包括未赋值的属性名 `gender`。然后使用 `console.log` 函数输出属性名。
输出结果为:
```
name
age
gender
```
在上面的示例中,我们定义了一个 `Person` 类型,其中 `gender` 属性为可选属性。在遍历属性名称时,我们使用 `for...in` 循环遍历了 `person` 对象的所有属性名称,包括未赋值的属性名称 `gender`。
阅读全文