📜  联合类型属性不存在 - TypeScript (1)

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

联合类型属性不存在 - TypeScript

在 TypeScript 中,我们可以将一个属性指定为联合类型,即该属性可以有多个数据类型中的一个。例如:

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

上面的代码中,age 属性被指定为一个数字类型和 undefined 类型的联合类型。这意味着该属性可以是数字类型或者 undefined 值中的一个。

但是,当我们试图访问不存在的联合类型属性时,TypeScript 编译器会报错,提示属性不存在。例如:

const person: Person = {
  name: "张三",
};

console.log(person.age); // Error: 类型“Person”上不存在属性“age”。

上面的代码中,我们试图访问一个 Person 类型的对象的 age 属性,但是该对象没有该属性,因此 TypeScript 编译器会提示属性不存在的错误。

要解决这个问题,我们需要确保访问的属性在该对象上是存在的。我们可以使用可选属性或者类型断言来避免 TypeScript 编译器报错。例如:

const person: Person = {
  name: "张三",
};

if (person.age !== undefined) {
  console.log(person.age);
}

console.log(person.age as number); // 使用类型断言避免编译器报错

上面的代码中,我们通过使用 if 语句来检查 person 对象的 age 属性是否存在,从而避免编译器报错。我们还可以使用类型断言来告诉编译器 person.age 是一个数字类型的值。