Skip to content

接口interface

interface

属性类接口
函数类型接口
可索引接口
类类型接口
接口扩展
接口的作用:
    在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用。
    接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部状态数据,也不关心这些类里方法的实现细节,它只规定这批类里必须提供某些方法,提供这些方法的类就可以满足实际需要。
    typescrip中的接口类似于java,同时还增加了更灵活的接口类型,包括属性、函数、可索引和类等。

属性接口 对json约束

行为和动作的规范 对批量方法进行约束

interface fullName{
    firstName:string;
    lastName:string;
}
function printName(name:fullName){
  console.log(name.firstName+'----'+name.lastName)
}
var obj={
    firstName:'hbc',
    lastName:'zrf',
    age:24
}
printName(obj)

可选属性接口

interface fullName{
    firstName?:string;
    lastName:string;
}

只读属性接口

interface fullName{
    readonly firstName?:string;
    lastName:string;
}

函数类型接口

加密函数类型接口

interface excrypt{
   (key:string,value:string):string;
}
var md5:excrypt=function(key:string,value:string):string{
 //模拟操作
 return key+value;
}
console.log(md5('name:','haob'))

可索引接口 数组 对象的约束 (不常用)

数组约束

interface UserArr{
 [index:number]:string
}
var arr:UserArr=['aaa','bbb']
console.log(arr[0])

对象的约束

interface UserObj{
 [index:string]:string
}
 var arr:UserObj={name:'20'}

类类型接口:对类的约束 和抽象类相似

interface Animal{
 name:string;
 eat(str:string):void
}
class Dog implements Animal{
 name:string;
 constructor(name:string){
     this.name=name
 }
 eat(){
     console.log('eat')
 }
}
var d=new Dog('haob');
d.eat()

接口扩展:接口可以继承接口 extends

interface Animal{
    eat(str:string):void
}
interface Person extends Animal{
    word():void;
}
class Prog{
    public name:string;
    constructor(name:string){
        this.name=name;
    }
    coding(code:string){
      console.log(code)
    }
}
class Web extends Prog implements Person{
    constructor(name:string){
        super(name)
    }
    eat(){
        console.log('eat')
    }
    word(){
        console.log('word')
    }
}
var d=new Web('haob');
d.eat();
d.word();
d.coding('code哈哈')