Typescript为什么要区别对待对象字面量和对象引用?interfaceProps{a:number}letobjAB={a:1,b:2}letdemo1:Props={a:1,b:2//Error}letdemo2:Props=objAB//Ok
2 回答
MMTTMM
TA贡献1869条经验 获得超4个赞
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;是可以的。
MM们
TA贡献1886条经验 获得超2个赞
var person=new Object();
person.age age=18;
console.log(person.age age);
“属性名可以加双引号”这个特性构造出来的对象也可以有,如下:
var person=new Object();
person["age age"]=18;
console.log(person["age age"]);
添加回答
举报
0/150
提交
取消