18、any,任意类型

1、任何一个类型,赋值后是不允许更改的(当然子类当然可以给父类)

let aa: number = 1;
aa = "kate";  // Type 'string' is not assignable to type 'number'.

这个时候any就会出现了 如果是any类型的变量可以在赋值给任意类型的数据

let m: any = 'kate1';
m = 1;

2、 任意值 的属性和方法

  • 在任意值上访问任何属性和方法都是允许的
  • 声明一个变量为任意值之后,对它的任何操作,返回的内容的类型都是任意值。
let n1: any = 8989;
console.log(n1.name); // undefined
console.log(n1.sayName); // undefined

3、未声明类型的变量都会被 自动推断为any类型(这句话亲测是不太行的,应该是最新的ts版本类型推断更强了一些,推断类型是会随着赋值的变化,随意变化的。绝不不是推断未any,因为任意属性和方法是用不了的

let nnn2;
nnn2.sayName();
// 报错  Object is possibly 'undefined'. 对象可能是“未定义的”。
let nnn2;
nnn2 = 'kate';
nnn2.sayName();
// 报错 Property 'sayName' does not exist on type 'string'.
// 将其直接推断为string了
let nnn2;
nnn2 = 'kate';
nnn2 = 55;
nnn2.sayName();
//Property 'sayName' does not exist on type 'number'.
let nnn2;
nnn2 = 'kate';
nnn2 = 55;

// 这个就是正确的,先被推断为string,然后又被推断为number

猜你喜欢

转载自blog.csdn.net/weixin_43131046/article/details/124905061