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})

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

目录
相关文章
|
6月前
|
JavaScript 前端开发 编译器
TypeScript【泛型1、泛型2、声明合并、命名空间 、模块1、模块2、声明文件简介】(五)-全面详解(学习总结---从入门到深化)
TypeScript【泛型1、泛型2、声明合并、命名空间 、模块1、模块2、声明文件简介】(五)-全面详解(学习总结---从入门到深化)
125 0
|
6月前
|
JavaScript 编译器
TypeScript中泛型在函数和类中的应用
【4月更文挑战第23天】TypeScript的泛型在函数和类中提供了灵活性,允许处理多种数据类型。了解泛型是掌握TypeScript类型系统的关键。
|
27天前
|
JavaScript 前端开发
TypeScript【类型别名、泛型】超简洁教程!再也不用看臭又长的TypeScript文档了!
【10月更文挑战第11天】TypeScript【类型别名、泛型】超简洁教程!再也不用看臭又长的TypeScript文档了!
|
2月前
|
JavaScript 安全
typeScript进阶(14)_泛型和注意事项
TypeScript中的泛型允许创建可重用的代码。泛型可以定义函数、接口、类,支持传递类型参数,实现类型安全。泛型可以用于数组,约束类型参数必须符合特定的接口,也可以在接口和类中使用。泛型类可以包含多个类型参数,甚至在泛型约束中使用类型参数。
23 1
typeScript进阶(14)_泛型和注意事项
|
1月前
|
JavaScript 安全 前端开发
TypeScript :枚举&字符&泛型
本文介绍了 TypeScript 中的泛型、约束、枚举和字符操作的基本用法。通过示例代码展示了如何定义和使用泛型函数、类和接口,以及如何利用 `keyof` 约束类型。此外,还介绍了枚举的定义和使用,包括常量枚举和外部枚举的区别。最后,简要说明了 `?.` 和 `??` 操作符的用途,帮助处理可能为空的属性和提供默认值。
|
3月前
|
JavaScript 安全 算法
TypeScript:一个好泛型的价值
TypeScript:一个好泛型的价值
|
4月前
|
JavaScript 前端开发 程序员
Typescript 【实用教程】(2024最新版)含类型声明,类型断言,函数,接口,泛型等
Typescript 【实用教程】(2024最新版)含类型声明,类型断言,函数,接口,泛型等
77 0
|
5月前
|
JavaScript
TypeScript 泛型类型
TypeScript 泛型类型
|
5月前
|
JavaScript Java 编译器
TypeScript 泛型
TypeScript 泛型
|
5月前
|
JavaScript 算法 开发者
16.【TypeScript 教程】TypeScript 泛型(Generic)
16.【TypeScript 教程】TypeScript 泛型(Generic)
40 2