📜  typescript 对象解构 - TypeScript (1)

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

TypeScript 对象解构

在 TypeScript 中,对象解构可以让我们更方便地从对象中抽取属性,并将它们重新命名或赋予默认值。本文将介绍 TypeScript 对象解构的基本语法和用法。

基本语法

对象解构使用花括号 {} 包裹要抽取的属性名,如果要将属性赋予新名称,可以使用冒号 : 进行重命名,如果要给属性设置默认值,可以使用等号 =

const user = {
  name: 'Alice',
  age: 25,
  gender: 'female',
};

const { name, age, gender, occupation = 'unemployed' } = user;

console.log(name);      // 'Alice'
console.log(age);       // 25
console.log(gender);    // 'female'
console.log(occupation);// 'unemployed'

在上面的示例中,我们声明了一个名为 user 的对象,包含 nameagegender 三个属性。然后,我们使用解构赋值语法抽取了这三个属性的值,并将它们分别赋予了变量 nameagegender。注意,在最后一个属性 occupation 名称后面使用了等号 =,表示如果 user 对象中没有 occupation 属性,则默认将其设置为字符串 'unemployed'

重命名属性

除了使用默认属性名之外,我们还可以在解构过程中将属性名重命名为新的变量名。要实现属性重命名,需要在解构语法中使用冒号 :

const person = {
  first: 'John',
  last: 'Doe',
};

const { first: firstName, last: lastName } = person;

console.log(firstName); // 'John'
console.log(lastName);  // 'Doe'

在上面的代码示例中,我们使用了 person 对象,该对象包括 firstlast 两个属性。在解构语法中,我们使用了冒号 :firstlast 属性进行了重命名,并将其分别赋予了变量 firstNamelastName

嵌套解构

如果要解构的对象具有嵌套结构,则可以在解构语法中使用嵌套花括号 {} 来抽取嵌套属性的值。

const user = {
  name: 'Bob',
  age: 30,
  address: {
    street: '123 Main St',
    city: 'Anytown',
    state: 'CA',
    zip: '12345',
  },
};

const { name, address: { city, zip } } = user;

console.log(name); // 'Bob'
console.log(city); // 'Anytown'
console.log(zip);  // '12345'

在上面的示例中,我们使用了一个名为 user 的对象,并将其包含的 nameageaddress 属性解构为相应的变量。注意,在解构语法中,我们使用了嵌套花括号 {} 来抽取 address 属性中的 cityzip 值,并将它们分别赋予了变量 cityzip

循环解构

我们也可以在循环语句中使用对象解构。在这种情况下,我们可以将每个循环的迭代结果解构为相应的变量,以方便访问它们。

const users = [
  { name: 'Alice', age: 25, gender: 'female' },
  { name: 'Bob', age: 30, gender: 'male' },
  { name: 'Charlie', age: 35, gender: 'male' },
];

for (const { name, age } of users) {
  console.log(`${name} is ${age} years old`);
}

在上面的示例中,我们使用了一个包含三个用户的数组 users。在循环中,我们使用解构语法将每个用户对象的 nameage 属性解构为相应的变量,并将它们用于输出到控制台。

结论

TypeScript 的对象解构提供了一种简单而灵活的方式,使我们能更轻松地从对象中抽取属性。通过重命名和给属性设置默认值,我们可以进一步增强对象解构的功能。