Object 和 object 和 {}

小于 1 分钟

Object 和 object 和 {}

Object

image-20230301171413459

Object类型是所有Object类的实例的类型,由以下两个接口来定义:

  1. Object接口定义了Object.prototype原型对象上的属性。

  2. ObjectConstructor接口定义了Object类的属性,如Object.create()

    image-20230301172310269

这个类型跟原型链有关,原型链的顶层就是Object,所以值类型和引用类型最终都指向Object

object

object代表所有非值类型的类型,如Array | Set | Map | Function等,常用于泛型约束。

{}

这是一个看起来很别扭的东西,我们可以将其理解为new Object,即和Object基本一样,它包含所有类型。

示例:

let a: Object = 123 // 不报错
let a1: Object = "123" // 不报错
let a2: Object = false // 不报错
let a3: Object = [] // 不报错

let a4: object = 123 // 报错
let a5: object = "123" // 报错
let a6: object = false // 报错
let a7: Object = [] // 不报错

let a8: {} = 123 // 不报错
let a9: {} = "123" // 不报错
let a10: {} = false // 不报错
let a11: {} = [] // 不报错

:当我们使用{}时,无法对其进行修改,如:

let a: {} = { name: "zhangsan" }
a.name = "lisi" // 报错
a.age = 18 // 报错

所以{}类型还是少用的好。

上次编辑于: