带你读《现代TypeScript高级教程》五、枚举和泛型(2)

简介: 带你读《现代TypeScript高级教程》五、枚举和泛型(2)

带你读《现代TypeScript高级教程》五、枚举和泛型(1)https://developer.aliyun.com/article/1348553?groupCode=tech_library


4.泛型


在 TypeScript 中,泛型(Generics)是一种强大的类型工具,它允许我们编写可重用、灵活和类型安全的代码。泛型允许我们在定义函数、类或接口时使用类型参数,这些类型参数在使用时可以被动态地指定具体的类型。

 

以下是泛型在 TypeScript 中的几个常见应用场景:

1. 函数泛型

函数泛型允许我们编写可适用于多种类型的函数,提高代码的重用性和灵活性。例如:

 

function identity(arg: T): T {
  return arg;
}
let result = identity(42);  // result的类型为number

 

在上面的示例中,identity函数接受一个类型参数T,表示输入和输出的类型。通过在函数调用时显式指定类型参数为number,我们可以将42传递给identity函数并推断出结果的类型为number

2. 接口泛型

接口泛型允许我们创建可适用于不同类型的接口定义。例如:

 

interface Pair {
  first: T;
  second: U;}
let pair: Pair = { first: 42, second: "hello" };

 

在上面的示例中,我们定义了一个Pair接口,它接受两个类型参数TU,表示firstsecond属性的类型。通过指定类型参数为numberstring,我们创建了一个具体的pair对象,它的first属性类型为numbersecond属性类型为string

3. 类泛型

类泛型允许我们创建可适用于不同类型的类定义。例如:

 

class Container {
  private value: T;
  constructor(value: T) {
    this.value = value;
  }
  getValue(): T {
    return this.value;
  }}
let container = new Container(42);let value = container.getValue();  // value的类型为number

 

在上面的示例中,我们定义了一个Container类,它接受一个类型参数T,表示类的内部值的类型。通过在创建类的实例时显式指定类型参数为number,我们创建了一个具体的container对象,它的value属性类型为number,并可以使用getValue方法获取该值。

 

泛型还支持约束(Constraints)的概念,通过使用约束,我们可以限制泛型的类型范围,使其满足特定的条件。

 

泛型在 TypeScript 中广泛应用于函数、类、接口和类型别名的定义中,它提供了一种灵活、类型安全且可重用的方式来处理不同类型的数据。通过使用泛型,我们可以在编写代码时提供更强大的类型支持,从而减少错误并提高代码的可维护性和可读性。

 

相关文章
|
25天前
|
JavaScript
TypeScript 泛型类型
TypeScript 泛型类型
|
25天前
|
JavaScript Java 编译器
TypeScript 泛型
TypeScript 泛型
|
27天前
|
JavaScript 编译器
31.【TypeScript 教程】混入(Mixins)
31.【TypeScript 教程】混入(Mixins)
19 3
|
27天前
|
JavaScript 编译器
35.【TypeScript 教程】编译选项
35.【TypeScript 教程】编译选项
16 2
|
27天前
|
JavaScript 编译器
33.【TypeScript 教程】命名空间
33.【TypeScript 教程】命名空间
18 2
|
5天前
|
JavaScript 安全
TypeScript类型(数字、字符串、字面量、数组、元组、枚举、对象等)
TypeScript类型(数字、字符串、字面量、数组、元组、枚举、对象等)
5 0
|
13天前
|
JavaScript 安全 编译器
TypeScript 基础学习笔记:泛型 <T> vs 断言 as
TypeScript 基础学习笔记:泛型 <T> vs 断言 as
21 0
|
25天前
|
JavaScript 前端开发 测试技术
TypeScript 枚举
TypeScript 枚举
|
25天前
|
JavaScript 编译器
typescript 泛型约束
typescript 泛型约束
|
25天前
|
JavaScript 前端开发 C#
TypeScript 元组 枚举
TypeScript 元组 枚举