interface 接口

接口声明是命名对象类型的另一种方式,是一系列抽象方法的声明,接口定义的方法需要具体的类来实现。 接口一般首字母大写。有的编程语言中会建议接口的名称加上 I 前缀。

interface IPerson {
  readonly id: number // 只读属性
  firstName: string // 必传属性
  lastName: string
  age?: number // 可选属性
  talk: () => void
  run: string | string[] | (() => string) // 联合类型
  [propName: string]: any // 任意属性
}

const person: IPerson = {
  id: 1,
  firstName: '屁虫',
  lastName: '放',
  run: '我会跑步',
  talk() {
    console.log(`我的名字是${this.lastName}${this.firstName}`)
  },
  dance() {
    console.log('我会跳舞')
  }
}
person.talk()

赋值的时候,变量的形状必须和接口的形状保持一致,属性不能多也不能少,不然会编译时报错 一旦定义了任意属性,那么确定属性和可选属性的类型都必须是它的类型的子集

类实现接口

接口继承接口

接口继承类

TypeScript 中接口也可以继承类,因为声明一个类的同时,也会创建和类同名的一个类型,只不过同名类型不包括类中的构造函数、静态属性、静态方法:

Last updated

Was this helpful?