返回

TypeScript 对象类型:塑造数据结构的基础

前端

TypeScript 官方手册翻译计划【五】:对象类型

在 JavaScript 中,最基础的分组和传递数据的方式就是使用对象。在 TypeScript 中,我们则通过对象类型来表示。

对象类型

对象类型用来对象的形状,它指定了对象中可以包含哪些属性以及这些属性的类型。我们可以使用花括号 {} 来定义对象类型,属性类型对之间使用分号 ; 分隔:

type Person = {
  name: string;
  age: number;
  hobby: string;
};

在这个例子中,Person 类型定义了一个具有 name(字符串)、age(数字)和 hobby(字符串)属性的对象。

可选属性

有时,对象可能包含可选的属性,即这些属性可以存在或不存在。我们可以使用问号 ? 来表示可选属性:

type User = {
  name: string;
  age?: number;  // 可选属性
  email: string;
};

只读属性

有些情况下,我们希望对象的某些属性在创建后不能被修改。我们可以使用 readonly 来声明只读属性:

type Product = {
  readonly name: string;
  price: number;
};

索引类型

索引类型允许我们指定对象索引的类型。例如,我们可以定义一个具有字符串键和数字值的映射类型:

type Dictionary<T> = {
  [key: string]: T;
};

接口与类型别名

在 TypeScript 中,对象类型有两种形式:接口和类型别名。两者在功能上是等效的,但有微妙的差别。

接口 使用 interface 关键字声明,允许扩展和实现:

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

类型别名 使用 type 关键字声明,不能被扩展或实现,但更易于重用:

type Human = {
  name: string;
  age: number;
};

实例化对象

一旦定义了对象类型,就可以使用它来实例化对象:

const person: Person = {
  name: "John Doe",
  age: 30,
  hobby: "programming",
};

总结

对象类型是 TypeScript 中表示对象的强大工具。它们允许我们定义对象的形状,指定属性类型和行为,并提高代码的可读性和可维护性。通过理解和使用对象类型,我们可以有效地组织和处理数据,从而创建健壮且可扩展的 TypeScript 应用程序。