为了账号安全,请及时绑定邮箱和手机立即绑定

急求!!!!TypeScript绕过编译器检查的一点困惑求解答!

急求!!!!TypeScript绕过编译器检查的一点困惑求解答!

至尊宝的传说 2019-08-21 12:58:20
在学习TypeScript过程中,遇到一点问题,先看下面的代码interfaceSquareConfig{color?:string;width?:number;}functioncreateSquare(config:SquareConfig):{color:string;area:number}{letnewSquare={color:"white",area:100};if(config.color){newSquare.color=config.color;}if(config.width){newSquare.area=config.width*config.width;}returnnewSquare;}createSquare({height:200,width:100});//报错/**之前提问写的,这里实际是错误的letparam={height:200}createSquare(param);//正确*///2月21日更正letparam={height:200,width:100};createSquare(param);//正确接口规定参数只能传color,width;而我传入了height,所以出错了。但是在TypeScript中文网额外的类型检查一节中,给出了代码中规避编译器报错的解决方法。我的困惑是,为什么这种方法能规避编译器类型检查?
查看完整描述

2 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

我这边最后一行也是错误的
楼主没有好好看文档,文档说的绕过检测的方式代码是这样的,由于有[propName:string]:any,它是可以允许传入有任意字段名的对象
interfaceSquareConfig{
color?:string;
width?:number;
[propName:string]:any;
}
letsquareOptions={colour:"red",width:100};
letmySquare=createSquare(squareOptions);
                            
查看完整回答
反对 回复 2019-08-21
  • 2 回答
  • 0 关注
  • 361 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号