前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TypeScript中泛型及泛型函数、泛型类、泛型接口,泛型约束,一文读懂

TypeScript中泛型及泛型函数、泛型类、泛型接口,泛型约束,一文读懂

作者头像
痴心阿文
发布2022-11-21 08:47:19
2K0
发布2022-11-21 08:47:19
举报
文章被收录于专栏:痴心阿文的专栏

 最近在学TypeScript,然后整理了一下关于TypeScript中泛型的一些笔记。

泛型的定义(generic type 或者 generics)

泛型是TypeScript语言中的一种特性。 是程序设计语言的一种特性。泛型是一种参数化类型。  定义函数或方法是的参数是形参,调用此函数或方法时传递的参数值是实参。

泛型一般用来处理多个不同类型参数的方法。就是在方法中传入通用的数据类型,使多个方法合并成一个。

可以将类型参数化 好处:达到代码复用、提高代码通用性的目的。

将类型由原来具体的类型变成一种类型参数,然后在调用时才传入具体的类型作为参数,调用时传入的类型称为类型实参。

  • 在使用过程中,泛型操作的数据类型会根据传入的类型实参来确定
  • 泛型可以用在 类、接口、方法中,分别被称为 泛型类、泛型接口、泛型方法。
  • 泛型类和泛型方法同时具备 通用性、类型安全和性能 ,是非泛型类和非泛型方法无法具备的
  • 优势:高性能的变成方式、达到代码复用、提高代码通用性、
  • 泛型使用的是类型参数(变量),它是一种特殊的变量,代表的是类型而不是值。

泛型函数的定义

function 函数名(参数1:T,...,参数n:类型):返回类型 { //函数体 }

代码语言:javascript
复制
function 函数名<T>(参数1:T,...,参数n:类型):返回类型 { 
     //函数体 
    }

泛型类的定义

class 类名{ //属性和方法签名}

代码语言:javascript
复制
class 类型<T>{ 
    //属性和方法签名
}

泛型接口的定义

Interface 接口名{ //属性和方法签名 }

代码语言:javascript
复制
Interface 接口名<T>{ 
    //属性和方法签名
 }

共同点: 必须使用<>括起参数 T , 跟在 函数名||类名||接口名 后面, 后续用T来表示此类型。

泛型变量 T (generic type variables)

泛型变量(generic type variables)一般用大写字母 T 表示,如果有多高不同的泛型变量,可以同时用T、U、K表示。  T 必须放在<>中间

一般不能单独出现,会出现在类 函数、 接口 、中 ,在函数体内,编译器不知道泛型变量T具体数据类型,只能认为其为 任意值(any) 类型

泛型约束

泛型参数T类似于any类型,可以表示任意值。但是有些情况下,函数需要处理的数据有一定的约束,比如有一个泛型函数需要访问泛型参数T的length属性,并加1。基于这种需求,必须对泛型参数T进行约束,也就是泛型约束。

泛型约束语法: T extends 接口或者类

代码语言:javascript
复制
/***
 * 
 * 泛型约束接口示例代码
 */

 Interface iGeneric{ 
    length:number;
 }

/***
 * 
 * 泛型约束类的示例代码
 * 
 */
class GenericAdd<T extends Igeneric>{
    arg:T;
    add(arg:T):boolean{
        this.arg = arg;
        arg.length++;
        return true;    
    }
    getLength(){
        return this.arg.length;
    }
}

PS:爱学习的学友,爱前端,爱前端,爱运营,爱推广,爱交朋友。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档