遍历一个类型的所有属性名
时间: 2023-08-04 11:30:45 浏览: 48
如果您想遍历一个 TypeScript 类型的所有属性名,您可以使用 TypeScript 提供的 `keyof` 关键字来获取类型的所有属性名称。示例代码如下:
```typescript
type Person = {
name: string;
age: number;
gender: string;
};
type PersonProps = keyof Person; // 获取 Person 类型的所有属性名称,类型为 "name" | "age" | "gender"
function printPersonProps() {
const props: PersonProps[] = ["name", "age", "gender"];
for (const prop of props) {
console.log(prop);
}
}
printPersonProps();
```
在上面的示例中,我们定义了一个 `Person` 类型和一个 `PersonProps` 类型,`PersonProps` 类型使用 `keyof` 关键字获取了 `Person` 类型的所有属性名称,类型为 `"name" | "age" | "gender"`。在 `printPersonProps` 函数中,我们定义了一个 `props` 数组,存储了需要遍历的属性名称,然后使用 `console.log` 函数输出属性名称。
输出结果为:
```
name
age
gender
```
相关问题
遍历一个类型的所有属性
如果您想遍历一个 TypeScript 类型的所有属性,您可以使用 TypeScript 提供的 `keyof` 关键字来获取类型的所有属性名称,然后使用索引访问类型的属性。示例代码如下:
```typescript
type Person = {
name: string;
age: number;
gender: string;
};
type PersonProps = keyof Person; // 获取 Person 类型的所有属性名称,类型为 "name" | "age" | "gender"
function printPerson(person: Person) {
const props: PersonProps[] = ["name", "age", "gender"];
for (const prop of props) {
const value = person[prop];
console.log(`${prop}: ${value}`);
}
}
const person: Person = { name: "张三", age: 18, gender: "男" };
printPerson(person);
```
在上面的示例中,我们定义了一个 `Person` 类型和一个 `PersonProps` 类型,`PersonProps` 类型使用 `keyof` 关键字获取了 `Person` 类型的所有属性名称,类型为 `"name" | "age" | "gender"`。在 `printPerson` 函数中,我们定义了一个 `props` 数组,存储了需要遍历的属性名称,然后使用索引访问 `person` 对象的属性值。
输出结果为:
```
name: 张三
age: 18
gender: 男
```
遍历所有属性名包括为赋值的
如果您想遍历一个 TypeScript 对象或类型的所有属性名,包括未赋值的属性名,可以使用 `Object.keys()` 函数来获取对象的所有属性名称。示例代码如下:
```typescript
type Person = {
name: string;
age: number;
gender?: string;
};
function printPersonProps(person: Person) {
const props = Object.keys(person);
for (const prop of props) {
console.log(prop);
}
}
const person: Person = { name: "张三", age: 18 };
printPersonProps(person);
```
在上面的示例中,我们使用 `Object.keys()` 函数获取了 `person` 对象的所有属性名称,包括未赋值的属性名称。然后使用 `for...of` 循环遍历属性名称,使用 `console.log` 函数输出属性名称。
输出结果为:
```
name
age
gender
```
在上面的示例中,我们定义了一个 `Person` 类型,其中 `gender` 属性为可选属性。因此,在创建 `person` 对象时,我们没有给 `gender` 属性赋值。在遍历属性名称时,我们使用 `Object.keys()` 函数获取了 `person` 对象的所有属性名称,包括未赋值的属性名称 `gender`。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)