Typescript 类型与接口

2023-11-29 21:00:36 浏览数 (1)

在TypeScript中,type和interface都用于定义对象或类型的形状。它们在功能上看起来相似,但在使用方式和扩展方面有一些区别。

Interfaces(接口):

接口用于定义对象的结构或形状。它们可以描述其他类或对象必须遵循的契约。接口还可以被扩展或合并。

代码语言:typescript复制
// 接口示例

interface Person {

  name: string;

  age: number;

}



// 实现接口

const person: Person = {

  name: 'Alice',

  age: 30,

};

Types(类型):

类型用于在TypeScript中创建不同类型的别名。它们允许您为任何有效类型创建名称,包括内置类型、联合类型、交叉类型等。类型是灵活的,并且可以使用交叉类型、联合类型和条件类型来表示复杂类型。

代码语言:typescript复制
// 类型示例

type Point = {

  x: number;

  y: number;

};



// 使用类型别名

const point: Point = {

  x: 10,

  y: 20,

};

区别:

扩展/合并:
  • 接口支持声明合并。如果您使用相同名称声明了两个接口,TypeScript会将它们合并为一个。
  • 类型可以通过交叉(&)或联合(|)的组合使用,但不能像接口那样进行扩展或合并。
语法:
  • 接口使用interface关键字。
  • 类型使用type关键字。
声明:
  • 接口更适合定义对象形状、契约或实现它们的类。
  • 类型更加灵活,不仅可以定义对象形状,还可以定义联合类型、交叉类型、条件类型等。

何时使用哪个:

**使用接口(interface):**

  • 定义对象、类或其形状的契约。
  • 需要声明合并或扩展现有类型/契约。

**使用类型(type):**

  • 创建联合类型、交叉类型或其他复杂类型。
  • 为原始类型、联合类型、交叉类型或复杂类型定义别名,以提高代码可读性。

在许多情况下,接口和类型都可以完成相同的任务,选择使用哪一个通常取决于个人偏好或代码库中的特定需求。没有严格的规则规定何时使用其中之一。

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞