乐趣区

关于前端:现代TypeScript高级教程类型推断

点击在线浏览,体验更好 链接
古代 JavaScript 高级小册 链接
深入浅出 Dart 链接
古代 TypeScript 高级小册 链接

类型推断

TypeScript 通过类型推断能够主动推导出变量和表达式的类型,进步代码的可读性和可维护性。

类型推断

类型推断是 TypeScript 在编译时依据上下文主动推导变量和表达式的类型。它依据变量的赋值、函数的返回值、表达式的操作等信息来确定变量或表达式的最佳类型。

1. 根底类型推断

TypeScript 依据变量的初始值来推断根底类型,包含字符串、数字、布尔值等。

let name = "John";  // 推断为 string 类型
let age = 30;  // 推断为 number 类型
let isStudent = true;  // 推断为 boolean 类型

2. 最佳公共类型推断

当咱们将不同类型的值赋给一个变量或数组时,TypeScript 会依据这些值的类型推断出一个最佳公共类型。

let values = [1, 2, "three", true];  // 推断为(number | string | boolean)[]

在下面的示例中,数组 values 蕴含了数字、字符串和布尔值,TypeScript 推断出这个数组的类型为(number | string | boolean)[],即联结类型。

3. 上下文类型推断

TypeScript 会依据上下文中的预期类型推断变量的类型。这种上下文能够是函数参数、赋值语句等。

function greet(person: string) {console.log(`Hello, ${person}!`);
}

greet("John");  // person 的类型推断为 string

在下面的示例中,函数 greet 的参数 person 的类型被推断为string,因为在函数调用时传入的实参是一个字符串。

4. 类型断言

如果咱们心愿手动指定一个变量或表达式的类型,能够应用类型断言(Type Assertion)来通知 TypeScript 咱们的用意。

let value = "Hello, TypeScript!";
let length = (value as string).length;  // 类型断言为 string

在下面的示例中,咱们应用类型断言 as string 将变量 value 的类型指定为string,以便在前面获取其长度时,TypeScript 能正确推断出类型。

5. 类型推断和泛型

在应用泛型时,TypeScript 会依据传入的参数类型推断泛型类型的具体类型。

function identity<T>(value: T): T {return value;}

let result = identity("Hello, TypeScript!");  // result 的类型推断为 string

在下面的示例中,泛型函数 identity 的参数 value 的类型被推断为传入的实参

类型,因而返回值的类型也被推断为string

总结

类型推断是 TypeScript 中的一个重要个性,通过主动推导变量和表达式的类型,能够进步代码的可读性和可维护性。TypeScript 依据赋值、返回值、上下文等信息进行类型推断,并在须要时容许手动指定类型。在编写现代化高级 TypeScript 代码时,深刻理解和利用类型推断是十分重要的一部分。通过联合最新的 TypeScript 语法和类型推断,咱们能够编写更具表达力和类型平安的代码。

退出移动版