为了账号安全,请及时绑定邮箱和手机立即绑定

小白,请教各位大佬!对比一下Typescript中的{}和object和Object?

小白,请教各位大佬!对比一下Typescript中的{}和object和Object?

海绵宝宝撒 2019-06-21 16:20:08
leta:{}=1;//Okletb:object=1;//Errorletc:Object=1;//Ok,
查看完整描述

2 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

首先Object与{}应该很好理解:
Object:一个对象,但是是包含了js原始的所有公用的功能。查看ts源码可以了解详情Object
{}:一个空对象实例,无原型链,但是原生的jsObject属性和方法还是可以支持的
constobj01={};
constobj02=Object;
console.log(obj01.prototype);//undefined
console.log(obj02.prototype);//...
console.log(obj01.__proto__===obj02.prototype);//true
console.log(obj01.toString());//"[objectObject]"
然后object:
object:可以理解为一个新的对象属性,ES6引入,可以看一下它的用例->WeakMap,同样是键值对集合,特殊在键值也必须是对象。
interfaceWeakMap{
...
}
我的理解是这样,希望能有所帮助:)
                            
查看完整回答
反对 回复 2019-06-21
?
GCT1015

TA贡献1827条经验 获得超4个赞

以下均假定strict=true
{}(type):按照规范是emptyobjecttype,但可以是primitive(即实际行为是除了null和undefined,可能是因为autoboxing)
Object(type):同上
object(type):除了primitives和null和undefined,即"不autobox就已经是Object"
总之有点混乱,因为ts里除了正常的supertype/subtype还有个"AssignmentCompatibility"
                            
查看完整回答
反对 回复 2019-06-21
  • 2 回答
  • 0 关注
  • 1599 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信