初识TypeScript(day7)

61 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第23天,点击查看活动详情

上一篇文章中,我们介绍了一下TS常用类型中的对象类型以及函数类型,接下来将会介绍一下TS的常用类型之接口。

TS常用类型之接口

  1. 接口的概述:当一个对象类型被多次使用的时候,一般会使用接口(interface)用来描述对象的类型,从而达到复用的目的。
  2. 接口的解释:
  • 使用interface关键字来声明接口
  • 接口名称,比如下列代码中的IPerson,可以是任意合法的变量名称
  • 声明接口之后,直接使用接口名称作为变量的类型
  • 因为每一行只有一个属性类型,因此,属性类型后面是没有;(分号)的
  • IPerson接口代码示例:
interface IPerson{
name:string
age:number
satHi():void
}
let person: IPerson= {
name:'jack',
age:19,
sayHi(){}
}
  1. interface(接口)和type(类型别名)的对比:
  • 相同点:都可以给对象指定类型
  • 不同点:接口,只能为对象指定类型,而类型别名不仅可以为对象指定类型,实际上还可以为任意类型指定别名。
  • 二者对比的代码示例如下:
// 接口
interface IPerson{
name:string
age:number
sayHi():void
}
// 类型别名
type IPerson = {
name:string
age:number
sayHi():void
}
type NumStr = number |  string
  1. 如果两个接口之间有相同的属性或者方法,可以将公共的属性或者方法抽离出来,并且通过继承的方式来实现复用,比如说,以下两个接口都有xy两个属性,重复写两次虽然可以,行得通,但是会显得代码冗余,非常繁琐
interface Point2D {x:number; y:number}
interface Point3D {x:number; y:number;z:number}

我们有更好的方式,如下代码所示:

interface Point2D {x:number; y:number}
interface Point3D extends Point2D{z:number}

解释:

  • 使用extends关键字实现了接口point3D继承Point2D
  • 继承之后,Point3D就有了Point2D的所有属性和方法,此时Point3D同时有xyz三个属性