小白,请教各位大佬!Typescript为什么要区别对待对象字面量和对象引用?

Typescript为什么要区别对待对象字面量和对象引用?
interfaceProps{
a:number
}
letobjAB={
a:1,
b:2
}
letdemo1:Props={
a:1,
b:2//Error
}
letdemo2:Props=objAB//Ok
临摹微笑
浏览 266回答 2
2回答

冉冉说

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;是可以的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript