leta:{}=1;//Okletb:object=1;//Errorletc:Object=1;//Ok,
2 回答
慕少森
TA贡献2019条经验 获得超9个赞
首先Object与{}应该很好理解:Object:一个对象,但是是包含了js原始的所有公用的功能。查看ts源码可以了解详情Object{}:一个空对象实例,无原型链,但是原生的jsObject属性和方法还是可以支持的constobj01={};constobj02=Object;console.log(obj01.prototype);//undefinedconsole.log(obj02.prototype);//...console.log(obj01.__proto__===obj02.prototype);//trueconsole.log(obj01.toString());//"[objectObject]"然后object:object:可以理解为一个新的对象属性,ES6引入,可以看一下它的用例->WeakMap,同样是键值对集合,特殊在键值也必须是对象。interfaceWeakMap{ ...}我的理解是这样,希望能有所帮助:)
九州编程
TA贡献1785条经验 获得超4个赞
以下均假定strict=true{}(type):按照规范是emptyobjecttype,但可以是primitive(即实际行为是除了null和undefined,可能是因为autoboxing)Object(type):同上object(type):除了primitives和null和undefined,即"不autobox就已经是Object"总之有点混乱,因为ts里除了正常的supertype/subtype还有个"AssignmentCompatibility"
添加回答
举报
0/150
提交
取消