• 什么是泛型,什么是泛型约束


    在TypeScript中,泛型是一种允许你编写可重用的代码,同时适应各种类型的强大工具。

    泛型的主要目标是提高类型安全性和代码重用性,同时保持类型的明确性。

    以下是一些具体的使用例子:

    泛型函数:你可以定义一个接受某种类型参数的函数,然后这个函数可以操作那个类型的任何值。例如:

    1. typescriptfunction printValue<T>(value: T): void {
    2. console.log(value);
    3. }
    4. printValue(10); // 输出:10
    5. printValue("Hello"); // 输出:"Hello"

    泛型类:你可以定义一个类,该类的类型参数可以是任何类型。例如:

    1. typescriptclass Box<T> {
    2. content: T;
    3. constructor(value: T) {
    4. this.content = value;
    5. }
    6. getValue(): T {
    7. return this.content;
    8. }
    9. }
    10. let integerBox = new Box<number>(10);
    11. let stringBox = new Box<string>("Hello");
    12. console.log(integerBox.getValue()); // 输出:10
    13. console.log(stringBox.getValue()); // 输出:"Hello"

    泛型接口:你可以定义一个接口,该接口的类型参数可以是任何类型。例如:

    1. typescriptinterface BoxInterface<T> {
    2. content: T;
    3. getValue(): T;
    4. }
    5. class Box<T> implements BoxInterface<T> {
    6. content: T;
    7. constructor(value: T) {
    8. this.content = value;
    9. }
    10. getValue(): T {
    11. return this.content;
    12. }
    13. }

    以上的 就是泛型标记,表示这个类、函数或接口是泛型的,可以接受一个或多个类型参数。使用时可以用实际的类型来替代 ,如 等。

    在TypeScript中,泛型约束是一种限制泛型类型参数的方式,以便更精确地指定泛型代码的适用范围。

    泛型约束可以通过在泛型类型参数后面添加一个约束类型来实现。约束类型可以是一个内置类型、一个类类型或者一个接口类型

    以下是一些泛型约束的使用例子:

    约束为内置类型:你可以约束泛型类型参数为某些内置类型。例如:

    1. typescriptfunction printValue(value: number | string): void {
    2. console.log(value);
    3. }

    在这个例子中,printValue 函数的泛型类型参数被约束为 numberstring 类型。约束为类类型:你可以约束泛型类型参数为一个类类型。例如:

    1. typescriptclass Animal {
    2. speak(): void {
    3. console.log("Animal speaks");
    4. }
    5. }
    6. function printValue(value: Animal): void {
    7. console.log(value);
    8. }

    在这个例子中,printValue 函数的泛型类型参数被约束为 Animal 类类型。

    约束为接口类型:你可以约束泛型类型参数为一个接口类型。例如:

    1. typescriptinterface Shape {
    2. area(): number;
    3. }
    4. function printValue(value: Shape): void {
    5. console.log(value);
    6. }

    在这个例子中,printValue 函数的泛型类型参数被约束为 Shape 接口类型。

    通过使用泛型约束,你可以确保泛型代码适用于特定类型的值,并且可以在编译时捕获潜在的类型错误。

  • 相关阅读:
    2023年【A特种设备相关管理(锅炉压力容器压力管道)】考试内容及A特种设备相关管理(锅炉压力容器压力管道)考试技巧
    多数据源配置
    低轨卫星传播特性仿真与分析
    java-php-python-ssm计算机office课程平台计算机毕业设计
    推导式(生成式)
    机器视觉【1】-机械臂视觉
    linux进程概念(下)
    怎样重置ubuntu mysql8密码
    基于超参数自动寻优的工控网络入侵检测
    用于非线性多载波卫星信道的多输入多输出符号速率信号数字预失真器DPD(Matlab代码实现)
  • 原文地址:https://blog.csdn.net/m0_73481765/article/details/133654685