接口就是一种规范,一种约束
class Dog{eat(){console.log("骨头")}run(){console.log("狗跑步")}}class Cat{eat(){console.log("鱼")}run(){console.log("猫跑")}}//只要是动物类都需要实现eat() run();
1-1 类类型接口
对类的约束
/* 类类型接口 */interface Animal{eat():void;run():void;}/* 接口就是一套规范,当很多的类型具有相同的特征或者属性,我们可以将这些特征属性单独抽离成一个接口,让这些类对接口(规范)进行实现*/class Dog implements Animal{eat(): void {console.log("骨头")}run(): void {console.log("狗跑")}}class Cat implements Animal{eat(): void {console.log("鱼")}run(): void {console.log("猫跑")}}
1-2 属性接口
/* 属性接口:对方法的参数的约束 */interface Params{url:string,method:string,/* ?这个属性可以有也可以没有 */data?:Object}function http(d:Params):void{console.log(d);}http({url:"top250",method:"get"})http({url:"login",method:"post",data:{username:"lisi",pwd:123}})
1-3 函数类型接口
interface encrypt{/* 设置函数的参数和返回值的类型 */(key:string,value:string):string;}var md5:encrypt = function(key:string,value:string):string{return key+value;}console.log(md5("key","lisi"))
1-4 接口的继承
interface Animal{name:string;age:number;}interface Dog extends Animal{eat(str:string):void;}class WolfDog implements Dog{name: string;age:number;eat(str: string): void {console.log(str);}constructor(name:string,age:number){this.name = name;this.age = age;}}var w:WolfDog = new WolfDog("狗",8);
