Skip to content

任意类型

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' // 报错,不可以进行添加属性或者对属性进行重新赋值

Released under the MIT License.