猿问

跪求!Typescript为什么要区别对待对象字面量和对象引用?十分感谢

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

RISEBY

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

相关分类

JavaScript
我要回答