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

对比一下Typescript中的{}和object和Object?

对比一下Typescript中的{}和object和Object?

当年话下 2019-07-28 12:49:01
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);//undefined
console.log(obj02.prototype);//...
console.log(obj01.__proto__===obj02.prototype);//true
console.log(obj01.toString());//"[objectObject]"
然后object:
object:可以理解为一个新的对象属性,ES6引入,可以看一下它的用例->WeakMap,同样是键值对集合,特殊在键值也必须是对象。
interfaceWeakMap{
...
}
我的理解是这样,希望能有所帮助:)
                            
查看完整回答
反对 回复 2019-07-28
?
九州编程

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

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

添加回答

举报

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