Skip to content

interface 接口

介绍

当一个对象类型被多次使用时,使用接口(interface)来描述对象类型,来进行复用。

Duck Type

type vs interface

  1. type 可以为联合类型、对象类型、元组类型等起别名,interface 更聚焦于描述对象结构。
  2. interface 可以通过 extends 继承其他接口或对象类型;type 没有同名的“继承”语法,通常通过 & 做组合。

基本使用

ts
// 定义接口
interface IPerson {
  readonly id: number
  name: string
  age?: number // ? 代表可选
  say(): void
  greet?(name: string): void
}

// 使用接口
const p: IPerson = {
  id: 112,
  name: 'foo',
  say() {},
}

继承

继承 interface

ts
// 定义接口
interface Point2D {
  x: number
  y: number
}

// 继承接口
interface Point3D extends Point2D {
  z: number
}

const pInterface: Point3D = {
  x: 11,
  y: 22,
  z: 33,
}

继承 type

ts
// 定义 type
type Point2D = {
  x: number
  y: number
}

// interface 也可以继承对象类型别名
interface Point3D extends Point2D {
  z: number
}

const pType: Point3D = {
  x: 11,
  y: 22,
  z: 33,
}

基于 MIT 许可发布