typescript之泛型

简介: typescript之泛型

1:为什么要用泛型

在模块化,组件化的今天,使用泛型主要是实现重用,使一个组件可以支持多种类型的数据,也许你可能会说我可以使用any呀,但一方面我们要有良好的代码规范,另一方面,如果我们使用any,则会失去编译器类型保护的作用。在项目中一般都提倡尽量少的使用any。那么为了实现重用就要用到泛型了。

2:泛型的使用

2.1在接口定义中使用

interface Indentities<V,M> {
   value:V;
   message:M
}

2.2在函数中的使用

function indentity(value:T,message:U):Indentities{
const indentities:Indentities ={
value,
message
};
return indentities;
}
indentity(1,'hello');
//上面的尖括号也可省略
2.3在定义类中使用(直接跟在类名后面)

// implements定义一个类并去实现接口
interface Indentities <U> {
   
  value:U;
  getIndentity:() => U
}
class IndentityClass<T> implements Indentities <T>{
   
    value:T;
    constructor(value:T) {
   
      this.value = value
    }
    getIndentity():T {
   
      return this.value;
    }
}
const numberClass = new Indentity<number>(6);
const stringClass = new Indentity<string>('hello');

3:什么时候使用泛型

1:当函数,接口,类,处理多种数据类型的时候;
2:当函数,接口,类,在多个地方使用该数据类型的时候;

4:泛型约束

对类型变量接收的类型进行限制
例如

function indentity<T>(arg:T):T {
   
  console.log(arg.length); //Error T doesn't have .length
  return arg;
}

因为编译器不能确保所有的类型都有length,所以就会报错。
因此我们需要列出对T的约束条件,我们可以使用接口和extends关键字来实现。
如:

interface Lengthwise {
   
  length:number;
}
function Indentity<T extends Lengthwise>(arg:T ):T {
   
    console.log(arg.length);
    return arg;
}
Indentity(3);//Error
Indentity({
   length:3})

这时的泛型函数被定义了约束,不再适用于所有类型。

目录
相关文章
|
4月前
|
安全 JavaScript 编译器
TypeScript 泛型:解锁灵活且安全的代码重用
TypeScript 泛型:解锁灵活且安全的代码重用
|
JavaScript 编译器
TypeScript中泛型在函数和类中的应用
【4月更文挑战第23天】TypeScript的泛型在函数和类中提供了灵活性,允许处理多种数据类型。了解泛型是掌握TypeScript类型系统的关键。
|
4月前
|
存储 JavaScript 安全
TypeScript 泛型:让你的代码既灵活又安全的“魔法”
TypeScript 泛型:让你的代码既灵活又安全的“魔法”
|
7月前
|
人工智能 JavaScript 程序员
一文彻底搞明白HarmonyOS基础TypeScript中的泛型函数
程序员Feri是一位拥有12年+经验的技术专家,擅长嵌入式、鸿蒙、人工智能和Java等领域。本文深入探讨TypeScript中的泛型函数,涵盖基础语法、类型约束、高级技巧及应用场景。通过泛型函数,实现代码逻辑与具体类型的解耦,提升类型安全性和复用性。内容包括集合操作、API抽象、工具类开发等实际应用,以及条件类型、默认类型参数和工具类型的高级技巧。最后提醒开发者注意过度泛型化和性能权衡问题,总结泛型函数在TypeScript类型系统中的核心地位及其未来发展方向。
185 1
一文彻底搞明白HarmonyOS基础TypeScript中的泛型函数
|
JavaScript 安全
typeScript进阶(14)_泛型和注意事项
TypeScript中的泛型允许创建可重用的代码。泛型可以定义函数、接口、类,支持传递类型参数,实现类型安全。泛型可以用于数组,约束类型参数必须符合特定的接口,也可以在接口和类中使用。泛型类可以包含多个类型参数,甚至在泛型约束中使用类型参数。
150 1
typeScript进阶(14)_泛型和注意事项
|
JavaScript 前端开发
TypeScript【类型别名、泛型】超简洁教程!再也不用看臭又长的TypeScript文档了!
【10月更文挑战第11天】TypeScript【类型别名、泛型】超简洁教程!再也不用看臭又长的TypeScript文档了!
|
JavaScript 安全 前端开发
TypeScript :枚举&字符&泛型
本文介绍了 TypeScript 中的泛型、约束、枚举和字符操作的基本用法。通过示例代码展示了如何定义和使用泛型函数、类和接口,以及如何利用 `keyof` 约束类型。此外,还介绍了枚举的定义和使用,包括常量枚举和外部枚举的区别。最后,简要说明了 `?.` 和 `??` 操作符的用途,帮助处理可能为空的属性和提供默认值。
162 0
|
JavaScript 安全 算法
TypeScript:一个好泛型的价值
TypeScript:一个好泛型的价值
|
JavaScript 算法 开发者
16.【TypeScript 教程】TypeScript 泛型(Generic)
16.【TypeScript 教程】TypeScript 泛型(Generic)
260 2
|
JavaScript
TypeScript 泛型类型
TypeScript 泛型类型