📜  for (... in ...) 语句必须使用 if 语句 (forin) 过滤 - TypeScript (1)

📅  最后修改于: 2023-12-03 14:41:17.951000             🧑  作者: Mango

使用 if 语句过滤 for-in 语句

在 TypeScript 中,我们可以使用 for-in 循环来迭代对象中的所有属性。但是,for-in 循环会将对象的原型链上的属性也迭代出来。因此,为了避免迭代到不必要的属性,我们应该使用 if 语句来过滤循环中的属性。

for (let property in object) {
  if (object.hasOwnProperty(property)) {
    // 处理属性的代码
  }
}

在上述例子中,hasOwnProperty 方法可以确保只在对象本身上进行迭代,而不是在整个原型链上进行迭代。这样可以避免迭代到不必要的属性。

interface Person {
    name: string;
    age: number;
    gender: string;
}

const person: Person = {
    name: 'Tom',
    age: 18,
    gender: 'Male'
};

for (let key in person) {
    if (person.hasOwnProperty(key)) {
        console.log(`${key}: ${person[key]}`);
    }
}

在上述例子中,我们定义了一个 Person 接口,表示一个人的属性。然后,我们创建了一个 person 对象,包含名称、年龄和性别。接下来,我们使用 for-in 循环遍历了 person 对象中的所有属性,并使用 hasOwnProperty 方法来过滤出其本身的属性。最后,我们打印出了属性名和属性值。

为了确保我们只处理对象本身的属性,我们必须使用 if 语句和 hasOwnProperty 方法来过滤属性。这可以帮助我们避免迭代到不必要的属性,确保我们的代码正常工作。