TypeScript(三):Interface 接口

1 Interface 接口

  • 对对像的形状(shape)进行描述
  • 对类(class)进行抽象
  • Duck Typing(鸭子类型)

接口名称一般的规范首字母为I大写,这个是约定,如下:

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

let viking: IPerson = {
  name: 'viking',
  age:1
}

可选属性:

interface IPerson {
  name: string;
  age?: number;
}

let viking: IPerson = {
  name: 'viking',
}

只读属性:

interface Person {
  readonly id: number;
  name: string;
  age?: number;
}

let viking: Person = {
  id: 1234,
  name: 'viking',
}

注意:readonly 和 cosnt 区别为,readonly 是用在属性上面,而 cosnt 是用在变量上的。

2 接口和类

  • 类通过 implements 实现相关的接口
interface Radio {
  switchRadio(): void;
}

class Car implements Radio{
  switchRadio() { }
}

class Cellphone implements Radio {
  switchRadio() { }
}
  • 实现多个接口
interface Radio {
  switchRadio(): void;
}

interface Battery {
  checkBatteryStatus();
}

class Cellphone implements Radio, Battery {
  switchRadio() { }
  checkBatteryStatus() { }
}
  • 接口继承其他接口,拥有整合其他接口
interface Radio {
  switchRadio(): void;
}

// 接口继承 Radio,拥有 Radio 接口方法
interface RadioWithBattery extends Radio {
  checkBatteryStatus();
}

class Cellphone implements RadioWithBattery {
  switchRadio() { }
  checkBatteryStatus() { }
}

你可能感兴趣的:(TypeScript(三):Interface 接口)