📜  typescript 获取对象值 - TypeScript (1)

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

TypeScript中获取对象值

在TypeScript中,可以使用以下方法来获取对象的值:

点操作符

点操作符可用于访问对象属性。例如:

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

const person: Person = { name: "John", age: 25 };

console.log(person.name); // 输出 "John"
console.log(person.age); // 输出 25
方括号操作符

方括号操作符可用于访问对象属性,当属性名不是一个有效的标识符时使用,或者需要通过变量来动态访问属性的值。例如:

interface Car {
  "model name": string; // 注意这是一个带空格的属性名
  year: number;
}

const car: Car = { "model name": "Toyota Camry", year: 2020 };

console.log(car["model name"]); // 输出 "Toyota Camry"

const propertyName = "year";
console.log(car[propertyName]); // 输出 2020
可选链操作符

可选链操作符(?.)用于获取对象的属性或方法值,如果该属性或方法不存在,则返回undefined,而不会抛出错误。例如:

interface Address {
  city?: string;
  postalCode?: string;
}

interface PersonInfo {
  name: string;
  address?: Address;
}

const person: PersonInfo = { name: "John" };

console.log(person.address?.city); // 输出 undefined

在上述示例中,如果person.address不存在,person.address?.city不会报错并返回undefined。

非空断言操作符

非空断言操作符(!)可用于告诉编译器一个表达式的值不为null或undefined。例如:

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

const person: Person = { name: "John" };

console.log(person.age!.toString()); // 报错,age值为undefined

person.age = 25;

console.log(person.age!.toString()); // 不会报错,age值为25

在上述示例中,如果person的age属性为undefined,调用.toString()会导致运行时错误。通过在person.age后添加!,我们告诉编译器它不为空,因此不会出现错误。

注意,滥用非空断言操作符会导致运行时错误,应该谨慎使用。

以上是在TypeScript中获取对象值的方法。根据具体需要选择合适的方法来访问和操作对象属性和方法。