任意值
任意值(Any)用来表示允许赋值为任意类型。
什么是任意值类型
在 TS
中,如果是一个普通类型,在赋值过程中改变类型是不被允许的:
let myName: string = 'Tom';
myName = 12;
// Type 'number' is not assignable to type 'string'.
但如果 myName
是 any
类型,则允许被赋值为任意类型。
任意值的属性和方法
在任意值上访问任何属性都是允许的:
let anyThing: any = "hello world";
console.log(anyThing.name);
console.log(anyThing.name.lastName);
也允许调用任何方法:
anyThing.setName('Tom');
anyThing.setName('Tom').say();
上述操作都不会在编译的时候报错,可以认为,声明一个变量为任意值之后,对它的任何操作,返回的内容的类型都是任意值。
未声明类型的变量
变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型:
let something;
something = 'seven';
something = 7;
something.setName('Tom');
等价于:
let something: any;
something = 'seven';
something = 7;
something.setName('Tom');