ts中接口的作用
对批量方法传入参数进行约束
接口:行为和动作的规范,对批量方法进行约束
//传入对象的约束 属性接口
interface FullName{
firstName:string;//注意;结束
secondName:string;
}
function printName(name:FullName){
//必须传入对象firstName secondName
console.log(name.firstName+'--'+name.secondName)
}
printName('1212');//错误
printName({
age:20,
firstName:'张',
secondName:'三'
})
//这样age会报错,因为没有定义,可以这样实现:
var obj = { //传入的参数必须包含firstName和secondName
age:20,
firstName:'张',
secondName:'三'
}
printName(obj)//不会报错
---------------接口可选属性
interface Config{
type:string;
url:string;
data?:string;
dataType:string
}
//原生js封装ajax
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('成功')
if(config.dataType=='json'){
JSON.parse(xhr..responseText)
}else{
console.log(xhr.responseText)
}
}
}
}
ajax({
type:'get',
url:'http://www.baidu.com',
dataType:'json'
})
---------------加密函数的类型接口
interface encrypt{
(key:string,value:string):string;
}
var md5:encrypt=function(key:string,value:string):string{
//模拟操作
return key+value;
}
console.log(md5('name','zhangsan'));
var sha1:encrypt=function(key:string,value:string):string{
//模拟操作
return key+'-------'+value;
}
console.log(sha1('name','lisa'))
---------------可索引接口:数组、对象的约束(不常用)
ts定义数组的方式:
var arr:number[]=[1,2,3,4]
var arr1:Array<string>=['1','2','3']
//可索引接口,对数组的约束
interface userArr{
[index:number]:string
}
var arr:userArr=['1','2','3'];
console.log(arr[0])
//可索引接口,对对象的约束
interface UserObj{
[index:string]:string
}
var arr:UserObj={name:'20'}//多一个参数都不行
---------------类类型接口:对类的约束 和 抽象类有点相似
多态:父类定义一个方法不去实现,子类去继承它并实现,每个子类有不同的表现
interface Animal{
name:string;
eat(str:string):viod;
}
class Dog implements Animal{
name:string;
constructor(name:string){
this.name=name
}
eat(){
console.log(this.name+'吃粮食')
}
}
vara d = new Dog()

浙公网安备 33010602011771号