前言

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

什么是任意值类型

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

  1. let str: string = '我是字符串';
  2. str = 1; //Type '1' is not assignable to type 'string'.

但如果是any类型的变量,那么它是允许被改变为任意类型的.

  1. let an: any = '任意值';
  2. an = 2;

任意值的属性和方法

在任意值上访问属性和方法都是被允许的。也可以这样理解,声明一个值为任意值后,对它的任何操作,返回的内容的类型都是任意值.

  1. let anySay: any = 'any';
  2. anySay.getName
  3. any.SetName('zhangsnan')
  4. let anyThing: any = {
  5. name: function (name) {
  6. return name;
  7. },
  8. age: 18
  9. }
  10. anyThing.age //18
  11. anyThing.name('jack') //jack

未声明类型的变量

如果一个变量未声明类型,那么它将会被识别未任意类型

  1. let somthing;
  2. somthing = '1';
  3. somthing = true;
  4. somthing = null;
  5. somthing = undefined;
  6. somthing //undefined

测试用例

  1. let debug:boolean = true;
  2. let a: any = '1';//任意值允许随意修改
  3. a = 2;
  4. // 未声明类型 则被识别为任意值
  5. let b;
  6. b = '7';
  7. b = true;
  8. debug && console.log({
  9. a: a,
  10. b: b
  11. });
  12. -----------------------------------------------------------------------------------
  13. { a: 2, b: true }

参考

https://ts.xcatliu.com/basics/any.html