Skip to content

任意值Any

任意值

任意值(Any)用来表示允许复制为任意类型。

什么是任意值类型

如果是一个普通类型,在赋值过程中改变类型是不被允许的:

let myFavoriteNumber:string = 'seven';
myFavoriteNumber = 7;  // 不能将类型"7"分配给类型"string"。

但如果是any类型,则允许被赋值为任意类型。

let myFavoriteNumber: any = 'seven';
myFavoriteNumber = 7;
任意值的属性和方法

在任意值上访问任何属性都是允许的,也允许调用任何方法:

    let anyThing: any ='hello';
    anyThing.toString();
    anyThing.length;
    anyThing.toNumber();
    anyThing.setName();
    anyThing.sayHello();

需要注意的是,这里的允许访问任何属性和方法,是指TypeScript不会编译报错,但是如果变量没有这个方法,在js编译过程会正常报错,但是不会在TypeScript编译过程校验,所以这里说可以访问任何属性和方法。

而且其他普通类型,例如number

    let num:number = 1;
    num.length; // 类型"number"上不存在属性"length"。

编译就会报错,不允许访问不存在的属性和方法。

并且,声明一个变量为任意值之后,对它的任何操作,返回的内容的类型都是任意值。

而其他普通类型,不允许改变类型,所以到这里,类型从开始申明了到最后是一致的。

未声明类型的变量

变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型:

let something;

等价于

let something:any;