如果没有明确的指定类型,那么 TypeScript 会依照类型推论(Type Inference)的规则推断出一个类型。

什么是类型推论?

举一个小例子:

  1. let name = 'zxc'
  2. name = 24 //error TS2588: Cannot assign to 'name' because it is a constant.

我们可以发现,报错了。
我们需要知道的是,TypeScript 会在没有明确的指定类型的时候推测出一个类型,这就是类型推论。

当然了,有一种特殊的情况:

那就是如果定义的时候没有赋值,不管之后有没有赋值,都会被推断成 any 类型而完全不被类型检查

  1. let age;
  2. age = 24;
  3. age = "zxc";

联合类型

当 TypeScript 不确定一个联合类型的变量到底是什么类型的时候,我们只能访问此联合类型中所有类型里共有的属性或方法

  1. function getLength(something: string | number): number {
  2. return something.length;
  3. //类型“string | number”上不存在属性“length”。类型“number”上不存在属性“length”。
  4. }