TypeScript基础语法——接口

TypeScript基础语法——接口

    • 对象类型
    • 函数类型
    • 类类型

接口

  • 接口:是对象的属性和方法的抽象(描述)
  • 是一种类型,一个规范,一种约束

对象类型

  • 需求:

需求: 创建人的对象, 需要对人的属性进行一定的约束
id是number类型, 必须有, 只读的
name是string类型, 必须有
age是number类型, 必须有
sex是string类型, 可以没有

//定义一个接口类型,该接口作为person对象的类型使用
  //限定或者约束该对象的属性数据
  interface Iperson {
    //id是只读的,而且是number类型
    readonly id: number
    name: string
    age: number
    sex?:string
  }

  const person: Iperson={
    id:1,
    name: 'sabina',
    age:18,
    // sex:'女'
  }
  console.log(person)

  person.sex='女'

  console.log(person)

函数类型

  • 为了使用接口表示函数类型,我们需要给接口定义一个调用签名。它就像是一个只有参数列表和返回值类型的函数定义。
  • 参数列表里的每个参数都需要名字和类型。
 //定义一个接口,用来作为某个函数的类型使用
  interface ISearchFunc{
    //定义一个调用签名
    (source:string,subString:string):boolean
  }
  //定义一个函数,该类型就是上面定义的接口
  const searchString:ISearchFunc = function (source: string, subString: string): boolean {
    return source.search(subString) > -1
    //在source的字符串中找substring
  }
  //调用函数
  console.log(searchString('abc', 'b'))
  //true

类类型

  • 类的类型,可以通过接口来实现
  • 类可以实现多个接口
  • 接口可以实现多继承,从而间接的让类实现多个接口
  • 接口之间叫继承,extends.类和接口叫实现,用implements
  //定义一个接口
  interface IFly {
    //该方法没有任何的实现
    fly(): void
  }
  //定义一个类,这个类的类型就是上面的接口
  class Person implements IFly {
    //实现接口中的方法
    fly() {
      console.log('我会飞了,我是超人')
    }
  }
  const person = new Person()
  person.fly()
  //定义一个接口
  interface ISwim {
    swim(): void
  }
  //定义一个类实现上述两个接口,一个类也可以同时被多个接口约束
  class Person2 implements ISwim, IFly {
    fly() {
      console.log('我会飞')
    }
    swim() {
      console.log('我会游泳')
    }

  }
  const person2 = new Person2
  person2.fly()
  person2.swim()
  //类可以通过接口的方式定义当前类的类型
  //类可以实现多个接口
  //接口可以继承其他的多个接口
  interface IMyFlyAndSwim extends IFly, ISwim{
    
  }
  //定义一个类直接实现这个借口
  class Person3 implements IMyFlyAndSwim{
    fly() {
      console.log('我会飞.')
    }
    swim() {
      console.log('我会游泳.')
    }
  }
  const person3 = new Person3
  person3.fly()
  person3.swim()

你可能感兴趣的:(typescript,前端,typescript,接口,前端)