14 # 泛型:泛型类与泛型约束

泛型类

泛型可以约束类的成员

下面定义一个泛型类

class Log<T> {
   
    run(value: T) {
   
        console.log(value);
        return value;
    }
}
// 传参
let log1 = new Log<number>();
log1.run(1);
// 不传参
let log2 = new Log();
log2.run("1");

静态成员不能引用类类型参数。

class Log<T> {
   
   static run(value: T) {
    // 会提示报错
        console.log(value);
        return value;
    }
}

泛型约束

改造一个上一节说的 log 函数,让其打印出参数的 length 属性,这个时候就会提示我们类型 T 上不存在属性 length。

function log<T>(value: T): T {
   
    console.log(value, value.length); // value.length 就会报错提示:类型 `T` 上不存在属性 length
    return value;
}

这时我们需要用到泛型约束这个概念,我们先定义一个接口,然后让 T 类型去继承这个接口

interface Length {
   
    length: number;
}

function log<T extends Length>(value: T): T {
   
    console.log(value, value.length);
    return value;
}

// 输入的参数有 length 属性
log([1, 2]);
log('123');
log({
   length: 1});

泛型的好处

  1. 函数和类可以轻松地支持多种类型,增强程序的扩展性
  2. 不必写多条重载函数,冗长的函数签名,增强代码可读性
  3. 灵活地控制类型之间的约束

相关推荐

  1. 14 # 约束

    2024-01-19 01:12:01       36 阅读
  2. <span style='color:red;'>泛</span><span style='color:red;'>型</span>..

    ..

    2024-01-19 01:12:01      33 阅读
  3. <span style='color:red;'>11</span>.<span style='color:red;'>泛</span><span style='color:red;'>型</span>

    11.

    2024-01-19 01:12:01      12 阅读
  4. TypeScript中对象、

    2024-01-19 01:12:01       40 阅读
  5. (标签)

    2024-01-19 01:12:01       40 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-19 01:12:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-19 01:12:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-19 01:12:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-19 01:12:01       20 阅读

热门阅读

  1. MySQL 8.0中引入的选项和变量(四)

    2024-01-19 01:12:01       37 阅读
  2. 积木游戏

    2024-01-19 01:12:01       34 阅读
  3. 【git】git更新远程分支到本地

    2024-01-19 01:12:01       34 阅读
  4. Vue前端规范【一】

    2024-01-19 01:12:01       27 阅读
  5. MYSQL 1

    MYSQL 1

    2024-01-19 01:12:01      34 阅读
  6. Django——django与环境搭建

    2024-01-19 01:12:01       33 阅读
  7. CDH6.3.2,不互通的cdh平台互导hive数据

    2024-01-19 01:12:01       34 阅读
  8. 【PyTorch简介】4.Building the model layers 生成模型层

    2024-01-19 01:12:01       30 阅读
  9. 学习记录1.10

    2024-01-19 01:12:01       31 阅读