TypeScript 中如何使用 in

TypeScript 中如何使用 in

TypeScript 是面向对象、类型化的 JavaScript 超集,它提供了静态类型检查、更好的代码提示和防止潜在错误发生的能力。它不仅使 JavaScript 更具有可维护性和可扩展性,而且能让我们在编写代码时更加自信。

在 TypeScript 中,in 是一种关键字,它可以用来检查一个对象是否包含某个特定的属性。这在某些情况下非常有用,例如当你需要检查一个对象是否可以被用于某个函数或方法时。

下面是一个关于 TypeScript 中使用 in 的示例代码:

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

interface Employee {
  name: string;
  salary: number;
}

function printProperty(obj: Person | Employee, property: "name" | "age" | "salary") {
  if (property in obj) {
    console.log(`${property}: ${obj[property]}`);
  } else {
    console.log(`${property} is not found.`);
  }
}

let person: Person = { name: "John", age: 30 };
let employee: Employee = { name: "Tom", salary: 5000 };

printProperty(person, "name"); // Output: name: John
printProperty(person, "age"); // Output: age: 30
printProperty(employee, "name"); // Output: name: Tom
printProperty(employee, "salary"); // Output: salary: 5000
printProperty(employee, "age"); // Output: age is not found.

上面的代码演示了如何在 TypeScript 中使用 in 来检查对象属性。我们定义了两个接口,Person 和 Employee,它们都有 name 属性,但是 Person 还有一个 age 属性,而 Employee 则有一个 salary 属性。接着,我们定义了一个 printProperty 函数,它接受一个对象和一个字符串类型的属性。

在函数内部,我们使用 in 关键字来检查对象是否包含所需的属性。如果对象包含该属性,则打印出该属性对应的值,否则输出信息告诉用户该属性没有被找到。

最后,我们定义了一个 person 对象和一个 employee 对象,分别传递给 printProperty 函数,来演示该函数如何运行。

在 TypeScript 中,in 还可以用于类型保护。例如,当你将一个对象赋值给一个变量时,你可能不知道该对象是 Person 类型还是 Employee 类型。在这种情况下,你可以使用 in 进行类型保护,以便针对每种情况执行不同的操作。下面是一个类型保护的示例代码:

function printInfo(obj: Person | Employee) {
  if ("age" in obj) {
    console.log(`${obj.name} is ${obj.age} years old.`);
  } else {
    console.log(`${obj.name} earns ${obj.salary} per year.`);
  }
}

let person: Person = { name: "John", age: 30 };
let employee: Employee = { name: "Tom", salary: 5000 };

printInfo(person); // Output: John is 30 years old.
printInfo(employee); // Output: Tom earns 5000 per year.

在上面的代码中,我们定义了一个 printInfo 函数,它接受一个 Person 或 Employee 对象。在函数内部,我们使用 in 进行类型保护,判断该对象是否是 Person 对象,如果是,则打印出姓名和年龄,否则打印姓名和薪水。

总结

在 TypeScript 中,in 是一种非常方便的关键字,它可以用于检查对象是否包含特定的属性,从而实现类型保护和其他有用的功能。我们可以在我们的代码中使用 in 来提高其可读性和可维护性,同时避免一些常见的错误。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a895dbadd4f0e0ff1bc193


纠错反馈