-
赋值时的表现
- 任意类型可以给any赋值,any也可以给任意类型赋值
let p1:any = 40
let p2:any = 'hellow'
// ...
let p:any = 40
let num:number = p
let str:string = p
let obj:object = p
- 任意类型可以给unknown赋值,但unknown只能给unknown或any赋值,unknown是TS3.0新增的类型
let p1:unknown = 40
let p2:unknown = 'hellow'
// ...
let p:unknown = 40
let x:unknown = p //ok
let y:any = p //ok
let num:number = p // Type 'unknown' is not assignable to type 'number'
let str:string = p // Type 'unknown' is not assignable to type 'string'
-
安全性方面比较
unkuown是更加安全的any类型,一般要配合类型收载或类型断言才能对其操作,否则在编译阶段就会报错
let p:unkunwn = 40
p.toFixed(2) //error
p.length //error