TypeScript 中的泛型详解

阅读时长 3 分钟读完

在 TypeScript 中,泛型是一种可以让我们在编写代码的时候更加灵活的工具。通过使用泛型,我们可以编写更加通用的代码,而不需要为每种类型都编写一份代码。在接下来的内容中,我们将详细讨论 TypeScript 中的泛型,并编写一些示例代码。

什么是泛型?

泛型是一种在编写代码时不确定类型的机制。使用泛型可以将类型作为参数传递给函数或类,在编写代码时不需要指定具体的类型。在 TypeScript 中,我们可以使用尖括号 <> 来定义泛型。

泛型函数

泛型函数是一种可以处理不同类型的函数。我们可以通过在函数名后面使用尖括号来定义泛型类型,然后在参数类型和返回值类型中使用泛型。

上述代码中,我们定义了一个 identity 函数,它接收一个参数并返回该参数。我们使用尖括号来定义 T 作为泛型类型,然后在函数参数类型和返回值类型中使用 T

泛型类

泛型类是一种可以处理不同类型的类。我们可以通过在类名后面使用尖括号来定义泛型类型,然后在类的属性和方法中使用泛型。

-- -------------------- ---- -------
----- -------- -
  ------- ----- - --- -----------

  ------------- -- -
    ----------------------
  -

  --------- -
    ------ -------------------
  -
-

--- ----------- - --- ----------------
-----------------------
-----------------------
-----------------------------------
-----------------------------------

--- ----------- - --- ----------------
-----------------------------
-----------------------------
-----------------------------------
-----------------------------------

上述代码中,我们定义了一个 Queue 类,它包含一个 items 属性和两个方法。我们使用尖括号来定义 T 作为泛型类型,然后在类的属性和方法中使用 T

泛型约束

有时候,我们需要对泛型进行约束,限制它只能是某些类型,否则会产生编译错误。我们可以使用 extends 关键字来进行泛型约束。

-- -------------------- ---- -------
--------- ---------- -
  ------- -------
-

-------- ----------------- ------- ---------------- --- - -
  ------------------------
  ------ ----
-

-------------------------
------------------- -- ----
----------------- ------- - ---

上述代码中,我们定义了一个 Lengthwise 接口,它包含一个 length 属性。然后我们定义了一个 loggingIdentity 函数,并使用 extends 关键字来进行泛型约束,要求传入参数必须实现了 Lengthwise 接口。

总结

泛型是一种非常强大的工具,在 TypeScript 中被广泛使用。通过使用泛型,我们可以编写更加通用的代码,减少代码的冗余和重复。希望本文对您在学习 TypeScript 中的泛型有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6450aaa2980a9b385b9a0e34

纠错
反馈