object、
Object以及
{} 这三个类型大家可能不太理解!
Object
/*
1、Object: 与原型链有关系, 原型链的顶端是这个Object 或者 function
2、那就意味着所有的原始类型, 以及对象类型最终都执行这个Object
3、在ts中Object就表示包含了所有的类型, 可以等于任何一个值
*/
let a: Object = 123
let a1: Object = []
let a2: Object = {}
let a3: Object = () => 123
// 缺点 赋值过后没有办法进行修改(无法对这个变量做任何赋值、更改的操作 )
// 报错 类型“Object”上不存在属性“name”
// let a4: {} = {name:'zy'}
// console.log(a4.name);
// a4.name = 'lx'
object
/**
* object 常用于泛型约束(作用: 把引用类型给它筛选出来)
* 它代表非原始类型的一个类型(除了原始类型,支持所有的引用类型)
*/
let a: object = '123' // 错误 原始类型
let a1: object = 123 // 错误 原始类型
let a2: object = false // 错误 原始类型
let a3: object = []
let a4: object = {}
let a5: object = () => {}
{}
/**
* {} : 字面量形式(可以理解为: new Object、 其实它也是包含所有的类型)
*/
let a: {} = '123'
let a1: {} = []
let a2: {} = 123
let a3: {} = {name:'zy'}
let a4: {} = ()=>{}
// 缺点 赋值过后没有办法进行修改(无法对这个变量做任何赋值、更改的操作 )
let a5: {} = {name:'lx'}
// a5.age = 25 // 报错
// a5.name = 'zy' // 报错