让初学者轻松掌握 TypeScript 对象

对象是 JavaScript 和 TypeScript 的基本组成部分。它们允许您将相关数据和函数组合在一起,从而提供一种在代码中模拟现实世界实体的方法。TypeScript 通过类型安全性增强了 JavaScript 对象,使您的代码更可预测且更易于维护。本指南将为初学者简化 TypeScript 对象的概念。

TypeScript 中的对象是什么?

object 是键值对的集合,其中键是字符串(或符号),值可以是任何类型。在 TypeScript 中,您可以使用类型或接口定义对象的形状,确保对象遵循特定的结构。

在 TypeScript 中定义简单对象

首先,让我们在 TypeScript 中定义一个简单的对象。这与在 JavaScript 中定义对象的方式类似,但增加了类型安全的好处。

基本对象示例

以下是在 TypeScript 中定义简单对象的方法:

const person: { name: string; age: number } = {
  name: "Alice",
  age: 25
};

console.log(person.name); // Output: Alice
console.log(person.age);  // Output: 25

在此示例中,person 对象具有两个属性:name(类型为 string)和 age(类型为 number)。TypeScript 将确保对象遵循此结构。

使用接口定义对象结构

接口 是 TypeScript 中定义对象形状的强大功能。接口提供了一种在代码中定义契约的方法,确保对象遵循特定的结构。

定义接口

以下是如何使用接口定义对象的结构:

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

const person: Person = {
  name: "Bob",
  age: 30
};

console.log(person.name); // Output: Bob
console.log(person.age);  // Output: 30

在此示例中,Person 接口定义了 person 对象的结构。person 变量必须遵循此结构,否则 TypeScript 将抛出错误。

对象中的可选属性

TypeScript 允许您使用 ? 符号在对象中定义可选属性。创建对象时可以省略可选属性,从而为您定义对象结构提供灵活性。

具有可选属性的示例

下面是一个示例,其中 phoneNumber 属性是可选的:

interface Employee {
  name: string;
  age: number;
  phoneNumber?: string; // Optional property
}

const employee1: Employee = {
  name: "John",
  age: 28
};

const employee2: Employee = {
  name: "Doe",
  age: 32,
  phoneNumber: "123-456-7890"
};

console.log(employee1.phoneNumber); // Output: undefined
console.log(employee2.phoneNumber); // Output: 123-456-7890

在此示例中,employee1 没有 phoneNumber 属性,而 employee2 有。根据 Employee 接口,两者都有效。

对象中的只读属性

TypeScript 允许你将属性 h5 设为只读,以防止在对象创建后对其进行修改。这对于创建不可变对象非常有用。

具有只读属性的示例

定义只读属性的方法如下:

interface Car {
  readonly brand: string;
  model: string;
}

const car: Car = {
  brand: "Toyota",
  model: "Camry"
};

// car.brand = "Honda"; // Error: Cannot assign to 'brand' because it is a read-only property

car.model = "Corolla"; // Valid
console.log(car.model); // Output: Corolla

在此示例中,brand 属性被标记为 readonly。任何修改它的尝试都将导致编译时错误。

TypeScript 中的嵌套对象

TypeScript 对象可以嵌套,这意味着一个对象可以包含另一个对象作为属性。这在复杂的数据结构中很常见。

嵌套对象示例

以下是嵌套对象的示例:

interface Address {
  street: string;
  city: string;
  zipCode: string;
}

interface User {
  name: string;
  age: number;
  address: Address; // Nested object
}

const user: User = {
  name: "Emily",
  age: 27,
  address: {
    street: "123 Main St",
    city: "New York",
    zipCode: "10001"
  }
};

console.log(user.address.city); // Output: New York

在此示例中,User 接口具有嵌套的 Address 对象。user 对象遵循此结构,允许访问嵌套属性。

结论

由于类型定义、可选属性、只读属性和嵌套结构,TypeScript 中的对象比普通 JavaScript 对象更强大、更灵活。通过使用接口定义对象,您可以创建更强大、无错误的代码。开始在您的项目中使用 TypeScript 对象,充分利用类型安全和结构化数据的全部功能。