Typescript为什么要区别对待对象字面量和对象引用?interfaceProps{a:number}letobjAB={a:1,b:2}letdemo1:Props={a:1,b:2//Error}letdemo2:Props=objAB//Ok
2 回答
冉冉说
TA贡献1877条经验 获得超1个赞
However,TypeScripttakesthestancethatthere’sprobablyabuginthiscode.Objectliteralsgetspecialtreatmentandundergoexcesspropertycheckingwhenassigningthemtoothervariables,orpassingthemasarguments.Ifanobjectliteralhasanypropertiesthatthe“targettype”doesn’thave,you’llgetanerror:Source应该是ts认为letdemo2:Props=objAB是把objAB当作Props使用,但是letdemo1:Props={a:1,b:2}则是直接实现了一个接口,所以需要严格进行校验吧。所以这样letdemo1:Props={a:1,b:2}asProps;是可以的。
添加回答
举报
0/150
提交
取消