6、TypeScript接口--方法约束(入参、返回值)

接口--方法约束(入参、返回值)

接口 在方法或函数参数上通过接口对入参进行约束

约束入参的参数个数、数据类型
约束方法返回值

// 接口 约束
//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"));
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值