任意类型
typescript
// any 任意类型 unknown 不知道的类型
// 1.top type 顶级类型 any unknown
// 2.Object
// 3.Number String Boolean
// 4.number string boolean(小写)
// 5. 1 'rarrot' false
// 6.never
// unknown 只能赋值给自身 或者是any
// unknown 没有办法读任何属性 方法也不可以调用
// unknown 比any更加安全,当不知道定义属性为什么类型时,优先使用unknown
let a: any = []
a = 1
a = '123'
a = false
a = Symbol(1)
let b: number = 5
a = b
b = a
let rarrot:any={牛逼:true,open:()=>123}
//上面any换成unknown,下面console语句会报错
console.log("🚀 ~ file: index.ts:23 ~ rarrot:", rarrot.open())
对象类型
typescript
// 大写object
let a:Object=123
let a1:Object="123"
let a2:Object=[]
let a3:Object={}
let a4:Object=false
// 小写object,仅支持引用类型,
// 所以可以通过object将引用类型筛选出来,常用于泛型约束
let a:object=123 // 报错,原始类型
let a1:object="123" // 报错,原始类型
let a2:object=false // 报错,原始类型
let a3:object=[] // 正确
let a4:object={} // 正确
let a5:object=()=> 123 // 正确
// 可以将{}理解为一个new Object,相当于原始类型
let a: {} = 123
let a1: {} = "123"
let a2: {} = []
let a3: {} = { name: 'rarrot' }
let a4: {} = false
a3.name = '1' // 报错,不可以进行添加属性或者对属性进行重新赋值