返回

TypeScript 学习笔记(六):类型推论与类型断言

前端

类型推论

类型推论是 TypeScript 的一个重要特性,它允许编译器在没有显式指定类型的情况下推断出变量的类型。这种特性使 TypeScript 的代码更加简洁和易于维护。

TypeScript 的类型推论规则如下:

  • 如果一个变量被赋值为一个字面量,那么它的类型就是该字面量的类型。
  • 如果一个变量被赋值为一个函数调用,那么它的类型就是该函数的返回值类型。
  • 如果一个变量被赋值为一个对象的属性,那么它的类型就是该属性的类型。
  • 如果一个变量被赋值为一个数组的元素,那么它的类型就是该数组元素的类型。
  • 如果一个变量被赋值为一个类的实例,那么它的类型就是该类的类型。

类型断言

类型断言允许开发者显式地指定一个变量的类型,即使编译器无法推断出该类型的正确类型。这在某些情况下是很有用的,例如,当我们想要强制转换一个变量的类型时。

TypeScript 中的类型断言有两种形式:

  • <类型>变量名:这种形式将变量名显式地转换为指定类型。
  • 变量名 as 类型:这种形式将变量名断言为指定类型。

泛型

泛型是 TypeScript 中的一种高级特性,它允许我们创建可重用的组件,这些组件可以处理不同类型的数据。

泛型使用尖括号 <> 来表示类型参数。例如,我们可以创建一个泛型函数 sum(),它可以计算两个任意类型的数字的和:

function sum<T>(a: T, b: T): T {
  return a + b;
}

在上面的例子中,<T> 是一个类型参数,它可以是任何类型。当我们调用 sum() 函数时,我们需要指定类型参数的实际类型。例如:

const result = sum(1, 2); // result 的类型为 number

总结

类型推论、类型断言和泛型都是 TypeScript 中非常重要的特性。理解和掌握这些概念将使你能够编写出更简洁、更易于维护的 TypeScript 代码。

代码示例

以下是一些 TypeScript 代码示例,展示了类型推论、类型断言和泛型的使用:

// 类型推论
let animal = {
  name: 'Dog',
  age: 3
};

// 类型断言
let animal2: Animal = {
  name: 'Cat',
  age: 5
};

// 泛型
function sum<T>(a: T, b: T): T {
  return a + b;
}

const result = sum(1, 2); // result 的类型为 number

进一步阅读