TypeScript 接口的作用:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用。接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部状态数据,也不关心这些类里方法的实现细节,它只规定这批类里必须提供某些方法,提供这些方法的类就可以满足实际需要。
Typescrip 中的接口类似于 Java,同时还增加了更灵活的接口类型,包括属性、函数、可索引和类。
1、属性类接口
function printLabel(labelInfo:{label: string}): void { console.log('printLabel'); } printLabel({label:'张三'}); interface FullName{ firstName:string; //注意;结束 secondName?:string; //通过 ? 设置可选参数 } function printName(name:FullName){ //必须传入对象 firstlame secondName console.log(name.firstName + '--' + name.secondName); } printName({firstName:'张', secondName:'三'});
2、函数类型接口
interface encrypt{ (key:string,value:string):string; //约束 encrypt 类型的函数的参数类型和返回值类型 } var md5:encrypt = function(key:string, value:string):string{ return key + value; console.log(md5('name', 'zhangsan')); }
3、可索引接口
var arr:number[] = [2342, 235325]; var arr1:Array<string> = ['111','222']; interface UserArr{ //数组的可索引接口 [index:number]:string; } var arr:UserArr = ['aaa', 'bbb']; interface UserObj{ //对象的可索引接口 [index:string]:string; } var obj:UserObj = {name: '张三'};
4、类类型接口
interface Animal{ name:string; eat(str:string):void; } class Dog implements Animal{ name:string; constructor(name:string){ this.name = name; } eat(food:string){ console.log(this.name + food); } }
5、接口扩展
interface Animal{ eat():void; } interface Person extends Animal{ //接口继承接口 work():void; } class Web implements person{ public name:string; constructor(name:string){ this.name = name; } eat(){ console.log(this.name + '喜欢吃馒头'); } work(){ console.log(this.name + '写代码'); } }