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

typescript关于接口,对象字面量额外属性检测问题,为什么使用断言或者变量时就不会检测额

typescript关于接口,对象字面量额外属性检测问题,为什么使用断言或者变量时就不会检测额

暮色呼如 2018-11-22 18:15:55
interface SquareConfig {    color?: string;    width?: number;}function createSquare(config: SquareConfig): { color: string; area: number } {    // ...}let mySquare = createSquare({ colour: "red", width: 100 });ts编译这段代码时会抛错,但是使用如下两种方式就不会抛错,这是什么原理?官网的解释让我无法理解,只会让我觉得ts语法好随便...let mySquare = createSquare({ width: 100, opacity: 0.5 } as SquareConfig);或者let squareOptions = { colour: "red", width: 100 };let mySquare = createSquare(squareOptions);这样都不会报错,使用断言的时候(as/<>)是会按照什么规则比照接口吗?然后将对象字面量复制给变量,我知道这是对象的一个引用指针,但是这样为什么就不会检测额外的属性了呢?官网地址
查看完整描述

1 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

第一个例子:as 不是断言吧 as 是强制转化 就说明你知道你要做的事情 当然 ts 也就让你编译过了
第二个例子 好像本来就应该过的吧 color 你又不是一定要; colour 是另外一个属性了
以前不过的原因是 ts 对 对象字面量有独特的 check 罢了

查看完整回答
反对 回复 2018-12-28
  • 1 回答
  • 0 关注
  • 387 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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