TypeScript 中的类和接口的泛型

阅读时长 4 分钟读完

什么是泛型?

泛型是一种在编程语言中常用的特性,它可以将类型参数化,使得代码可以适用于多种不同的类型,从而提高代码的复用性和灵活性。在 TypeScript 中,泛型可以应用于函数、类、接口等多种类型中。

类中的泛型

在 TypeScript 中,类可以使用泛型来实现对不同类型的支持。下面是一个简单的示例,展示了如何定义一个泛型类:

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

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

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

  ------- ------ -
    ------ ------------------
  -
-
展开代码

在这个示例中,我们定义了一个 Stack 类,它使用了一个泛型类型 T。在类中,我们可以使用 T 来定义成员变量和方法的参数类型和返回值类型,从而实现对不同类型的支持。例如,我们可以使用这个类来创建一个存储字符串的栈:

我们也可以使用这个类来创建一个存储数字的栈:

通过使用泛型,我们可以轻松地创建一个通用的栈类,它可以支持不同类型的数据。

接口中的泛型

在 TypeScript 中,接口也可以使用泛型来定义。下面是一个示例,展示了如何定义一个泛型接口:

在这个示例中,我们定义了一个 Pair 接口,它使用了两个泛型类型 TU。在接口中,我们可以使用泛型类型来定义成员变量的类型,从而实现对不同类型的支持。例如,我们可以使用这个接口来创建一个存储字符串和数字的键值对:

通过使用泛型,我们可以轻松地创建一个通用的键值对接口,它可以支持不同类型的数据。

泛型约束

在 TypeScript 中,我们可以使用泛型约束来限制泛型类型的范围。下面是一个示例,展示了如何使用泛型约束来限制泛型类型必须实现一个指定的接口:

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

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

--------------------- -- -
--------------- -- ---- -- -
------------- ------- -- --- -- --
----------------- -- ------ ---- ----- ---- --- ------- --- ---------- ------------
展开代码

在这个示例中,我们定义了一个 HasLength 接口,它包含了一个 length 属性。我们还定义了一个 printLength 函数,它使用了一个泛型类型 T,并使用泛型约束 extends HasLength 来限制泛型类型必须实现 HasLength 接口。在函数中,我们可以使用泛型类型的 length 属性来输出其长度。

通过使用泛型约束,我们可以避免在函数中使用不支持 length 属性的类型,从而提高代码的安全性和可靠性。

结论

在 TypeScript 中,泛型是一种非常有用的特性,它可以提高代码的复用性和灵活性。通过学习本文中的内容,我们可以了解到如何在类和接口中使用泛型,并了解到如何使用泛型约束来限制泛型类型的范围。希望本文对您有所帮助,能够在实际开发中发挥作用。

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

纠错
反馈

纠错反馈