上一章TypeScript教程请查看:TypeScript使用类型注解
【TypeScript类型推断 –
TypeScript开发教程】在TypeScript中,不需要总是注解类型,当没有类型注解形式的显式信息可用时,TypeScript编译器推断类型信息。
在TypeScript中,TypeScript编译器在以下情况下推断类型信息:
- 初始化变量和成员
- 设置参数的默认值
- 确定的函数返回类型
let x = 3;
在上面的例子中,变量“x”的类型是一个数字,类型推断发生在初始化变量和成员、设置参数默认值和确定函数返回类型时。
再举一个例子。
var x = "srcmini";
var y = 501;
x = y;
// 编译时错误: Type 'number' is not assignable to type 'string'
在上面的例子中,我们得到一个错误,因为在推断类型时,TypeScript推断变量“x”的类型为字符串,变量“y”为数字。当我们试图将y赋值给x时,编译器会生成一个错误,即数字类型不能赋值给字符串类型。
最佳通用类型:类型推断当没有显式的类型注释可用时,类型推断有助于类型检查。在类型推断中,可能会出现这样的情况:一个对象可能被多个类型初始化。
例如
let arr = [ 10, 20, null, 40 ];
在上面的示例中,我们有一个值为10、20、null和30的数组,这里,我们为数组的类型提供了两个选择:number和null。最好的通用类型算法选择与所有类型兼容的类型,即, number和null。
再举一个例子。
let arr2 = [ 10, 20, "srcmini" ];
在上面的示例中,数组包含类型为number和string的值。现在,TypeScript编译器使用最常见的类型算法,并选择与所有类型兼容的类型。在这种情况下,编译器将类型视为数组中所有类型的联合。这里的类型是(string或number),这意味着数组可以保存字符串值或数值。
函数的返回类型也由返回值来推断。例如:
function sum(x: number, y: number )
{
return x + y;
}
let Addition: number = sum(10,20);
// 正确
let str: string = sum(10,20);
// 编译错误
在上面的例子中,sum函数的返回类型是number。因此,它的结果将存储在数字类型变量中,而不是字符串类型变量中。
推荐阅读
- TypeScript类型断言 – TypeScript开发教程
- TypeScript使用类型注解 – TypeScript开发教程
- TypeScript操作符全解 – TypeScript开发教程
- let和var关键字的区别 – TypeScript开发教程
- TypeScript使用变量 – TypeScript开发教程
- Null和Undefined之间的区别 – TypeScript开发教程
- TypeScript数据类型 – TypeScript开发教程
- 编写第一个TypeScript程序 – TypeScript开发教程
- 安装TypeScript的两种方式 – TypeScript开发教程