教程来源于 小满TypeScript基础教程全集(完结)


Any类型

  1. any类型 没有强制限定哪种类型,随时切换类型都可以。我们可以对 any 进行任何操作,不需要检查类型

     let anys:any = 123
     anys = '123'
     anys = true

  1. 声明变量时如果没有指定任意类型,则默认为 any类型

     let anys2;
     anys2 = '123'
     anys2 = true

  1. 弊端 如果使用了 any类型,就失去了 TS 类型检测的作用

  2. TypeScript 3.0中引入的 unknown 类型也被认为是 top type ,但它更安全。与 any 一样,所有类型都可以分配给unknown

    unknown类型比any更加严格当你要使用any 的时候可以尝试使用unknown

注意:

unknown 可以定义任何类型的值

 let value:unknown;
 value = true;           //OK
 value = 42;             //OK
 value = "Hello World";  //OK
 value = [];             //OK
 value = {};             //OK
 value = null;           //OK
 value = undefined;      //OK
 value = Symbol("type")  //OK

以下这样下会报错 unknown 类型不能作为子类型只能作为父类型 any可以作为父类型和子类型

unknown类型不能赋值给其他类型

 let names:unknown = '123'
 let names2:string = names

image-20221222201705082

这样就没问题了 any类型是可以的

 let names:any = '123'
 let names2:string = names

unknown可赋值对象只有 unknown 和 any

 let bbb:unknown = '123'
 let aaa:any = '456'
 aaa = bbb

区别2

如果是any类型在对象没有这个属性的时候还在获取是不会报错的

 let obj:any = {b:1}
 obj.a

如果是unknown 是不能调用属性和方法的

 let obj1:unknown = {b:1,ccc:():number=>213}
 obj1.b
 obj1.ccc()