接口--方法约束(入参、返回值)
接口 在方法或函数参数上通过接口对入参进行约束
约束入参的参数个数、数据类型
约束方法返回值
// 接口 约束
//1、方法上使用接口参数
//1.1、属性接口,对传入的参数进行约束,属性约束
//传入的参数必须是对象,并且必须有属性label属性,是string类型
function say(obj:{lable:string}):void{
console.log(obj.lable);
}
//say('ff');//报错
say({lable:'haha'});
//say({lable:'',name:''});//报错,只能有label属性
//1.2、通过接口实现约束,当参数多时候使用
interface MyParamters {
firstName:string;
lastName:string;
}
function print(para: MyParamters) {
console.log(`${para.firstName}--${para.lastName}`);
}
//传入的参数必须包含 指定的接口属性,不可以有多余的属性
print({
firstName:"jake",
lastName:"hongying"
});
//可以传入1个对象,只要有对应的属性即可,这个对象可以有其他的属性
let pp={
firstName:"jake1",
lastName:"hongying1",
age:23
};
print(pp);
//1.3、方法参数,可传可不穿的约束。用“?"表示的参数可以传,可以不传
interface doParams {
name:string,
age?:number //可传可不传的属性
}
function printInfo(info:doParams) {
console.log(`${info.name}>>${info.age}`);
}
printInfo({name:"jake"});
//案例:ajax请求方法,某些参数可以传可以不传
interface ajaxParameter {
type:string,
url:string,
data?:string,
dataType?:string
}
function ajax(param:ajaxParameter) {
console.log('创建XmlHttpRequst对象,发送ajax请求,所有请求参数已经有约束了');
}
ajax({type:"GET",url:"http://www.baidu.com/"});
//1.4、函数类型接口:对方法传入参数,以及返回值进行约束
interface encrypt {
(key:string,value:string):string;
}
//定义方法,方法的入参和返回必须满足指定的接口条件
let md5:encrypt=function (key:string,value:string):string {
return key+"%#%#"+value;
}
//参数类型错误时,编译报错
// let md6:encrypt=function (key:number,value:string):string {
// return key+"%#%#"+value;
// }
console.log(md5("jake","8888"));