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

leta:{}=1;//Ok
letb:object=1;//Error
letc:Object=1;//Ok,
当年话下
浏览 393回答 2
2回答

慕少森

首先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{...}我的理解是这样,希望能有所帮助:)

九州编程

以下均假定strict=true{}(type):按照规范是emptyobjecttype,但可以是primitive(即实际行为是除了null和undefined,可能是因为autoboxing)Object(type):同上object(type):除了primitives和null和undefined,即"不autobox就已经是Object"总之有点混乱,因为ts里除了正常的supertype/subtype还有个"AssignmentCompatibility"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript