接口
接口是一种规范的定义,它定义了行为和动作的规范。包括属性、函数、可索引和类等。
模拟 ajax
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| interface Config{ type:string, url:string, data?:string, dataType:string } function Ajax(config:Config){ var xhr = new XMLHttpRequest(); xhr.open(config.type,config.url,true); xhr.send(config.data); xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){ console.log('success'); } } } Ajax({ type:'get', url:'/test', dataType:'json' })
|
1、属性接口 对json约束 对批量方法进行约束
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| interface FullName{ first:string; second:string; age?:number } function printName(name:FullName){ console.log(name.fitst); }
let obj = { first:'zhangsan', second:'lisi' } printName(obj);
|
2、函数类型接口
1 2 3 4 5 6 7 8
| interface encrypt{ (key:string,value:string):string; } var md5:encrypt=function(key:string,value:string):string{ return key+value; } md5('name','zhangsan');
|
3、可索引接口 数组对象的约束 (不常用)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| var arr:number[]=[123,123] var arr:array<number>=[123,123]
interface UserArr{ [index:number]:string } var arr:UserArr=['aaa',123] var arr:UserArr=['aaa','123123']
interface UserArr{ [index:string]:string } var arr:UserArr={name:'zhangsan'}
|
4、类类型接口:对类的约束 和 抽象类有点相似
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| interface Animal{ name:string; eat(str:string):void; } class Dog implements Animal{ name:string; constructor(name:string){ this.name = name; } eat(){ console.log(this.name+'eat meal'); } }
var d = new Dog('小黑'); d.eat();
|
5、接口扩展 接口可以继承接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| interface Animal{ eat():void; } interface Penson extends Animal{ work():void; } interface Programmer{ name:string, constructor(name:string){ this.name = name; } codding(code:string){ console.log(this.name+code); } }
class Web extends Programmer implements Person{ name:string, constructor(name:string){ super(name); } eat(){ console.log(this.name+'吃米饭'); } work(){ console.log(this.name+'写代码'); } } var d = new Web('小李'); d.eat(); d.work(); d.codding('TS');
|