TypeScript学习——类型推断、联合类型

类型推断

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

什么是类型推断

let test = 'test';
test = 7;  //error

上面这段代码虽然没有指定类型,但在编译时会报错,因为它等价于:

let test: string = 'test';
test = 7;  //error

TypeScript 会在没有明确的指定类型的时候推测出一个类型,这就是类型推论。

如果顶的时候没有赋值,那么这个变量会被推断为any类型,之后任何赋值都不会报错

let test;
/*
*  等价于这样写
*/
let test: any;
test = 'test';
test = 7;

什么是联合类型

联合类型表示取值可以为多种类型中的一种。

let test: string | number;
test = 'test';
test = 7;
test = [];  //error

联合类型使用|分隔每个类型。
let test: string | number的意思是,允许test的类型是string或者number,不允许其他类型。

联合类型的坑

当我们将一个变量定义为联合类型时,我们只能访问此联合类型中所有类型的公用方法和属性。

function fn(value: number | string){
  return value.length;
}
//Error: Property 'length' does not exist on type
//'string | number'.Property 'length' does not
//exist on type 'number'.

在这个例子中,length不是stringnumber的共有属性,所以报错。

联合类型的变量在被赋值时,会根据类型推断的规则推断出一个类型。

你可能感兴趣的:(TypeScript学习——类型推断、联合类型)