objectObject 以及{} 这三个类型加强理解

  1. Object

    img

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

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

    • ObjectConstructor 接口定义了 Object 类的属性, 如上面提到的 Object.create()

    这个类型是跟原型链有关的原型链顶层就是Object,所以值类型和引用类型最终都指向Object,所以Object就表示包含了所有的类型,它可以等于任何一个值

     // 1. Object        可以包含所有类型
     let a:Object = 123 
     let a1:Object = '123' 
     let a2:Object = [] //数组
     let a3:Object = {} //对象
     let a4:Object = ()=>123 //函数

  1. object

    object 代表所有非值类型的类型,例如 数组 对象 函数等,常用于泛型约束

     // 2. object    常用于 泛型约束
     // 代表非原始类型的一个类型
     // let b:object = '123' //错误 字符串属于原始类型,不支持
     // let b1:object = 123 //错误 数字也是原始类型
     // let b2:object = false //错误 布尔类型也是原始类型
     let b3:object = [] //正确 支持数组
     let b4:object = {} //正确 支持对象
     let b5:object = ()=>123 //正确 支持函数
  2. {} 空对象 可以理解成 new Object

    特性与Object一样 但是无法对变量进行任何赋值的操作 该类型比较少用

     // 3. {} 空对象 可以理解成 new Object
     // 特性与Object一样    但是无法对变量进行任何赋值的操作  该类型比较少用
     let c:{} = 123
     let c1:{} = '123'
     let c2:{} = []
     let c3:{} = {name:1}    //赋值后无法进行修改
     // c3.age = 3
     let c4:{} = ()=>123

    image-20230102141437646