首页 > 其他分享 >泛型

泛型

时间:2023-09-03 18:47:34浏览次数:34  
标签:const value Test 参数 arg 泛型

泛型(Generics)

UTS 支持泛型(Generics)特性,允许您编写更通用、可重用的代码,同时提高类型安全性。

#定义泛型

泛型使用尖括号 <> 声明一个或多个泛型参数。

#泛型函数

泛型函数的泛型参数定义在函数参数的圆括号之前。

function test<T>(arg: T): T {
  return arg
}

const str: string = test<string>('a')

const num: number = test<number>(1)
复制代码

#泛型类

泛型类的泛型参数定义在类名之后。

class Test<T> {
  value: T
  constructor (value: T) {
    this.value = value
  }
}

const test1: Test<string> = new Test<string>('a')
const str1: string = test1.value

const test2: Test<number> = new Test<number>(1)
const num1: number = test2.value
复制代码

#泛型接口

泛型接口与泛型类相似,泛型参数定义在接口名之后。

interface ITest<T> {
  value: T
}

class TestImpl<T> implements ITest<T> {
  value: T
}
复制代码

#泛型推断

当泛型参数类型与函数的参数类型相关时,泛型参数能够根据函数参数类型自动推断,此时可以省略泛型参数。

const str1 = test<string>('a')
const str2 = test('a')
复制代码

#泛型约束

可以使用 extends 关键字来限制泛型参数的类型范围。

function testArray<T extends Array<string>>(arg: T): T {
  return arg
}
复制代码

使用其他泛型类型时,如果不需要限制泛型参数的类型可以使用 unknown 关键字表示。

function testArray<T extends Array<unknown>>(arg: T): T {
  return arg
}

标签:const,value,Test,参数,arg,泛型
From: https://www.cnblogs.com/full-stack-linux-new/p/17675330.html

相关文章

  • C#中泛型集合List<T>反序列化问题及解决方法
    一、普通类型的反序列化程序集问题及处理方法在一些应用系统中常常有两个子系统软件A与B:A软件序列化一个数据文件,该文件将在B软件中使用。例如,在15年的交通运输部小样本调查数据的审核软件中,A软件就是笔者自己用的审核规则编制软件;B软件则是给用户使用的审核小样本调查数据的客户......
  • Java-泛型
    1.泛型介绍泛型的本质是参数化类型,这样在具体使用的时候可以临时确定是什么类型。泛型可以应用在类、接口、方法、集合中,被称为泛型类、泛型接口、泛型方法。Java在语法上支持泛型,但是在编译阶段会进行所谓的“类型擦除”(TypeErasure),将所有的泛型表示(尖括号中的内容)......
  • 泛型1例
    Tm=recordh,w:Integer;end;usesGenerics.Collections;varm1,m2:TList<Tm>;mr:Tm;i:Integer;beginm1:=TList<Tm>.Create;fori:=1to5dobeginmr.h:=i;mr.w:=i;m1.Add(mr);end;m2:=m1;......
  • 泛型
    为什么需要泛型?适用于多种数据类型执行相同的代码查看代码privatestaticintadd(inta,intb){System.out.println(a+"+"+b+"="+(a+b));returna+b;}privatestaticfloatadd(floata,floatb){System.out.println(a+"+"+b......
  • 泛型协变
    fromtypingimportTypeVar,GenericclassBeverage:❶"""任何饮料"""classJuice(Beverage):"""任何果汁"""classOrangeJuice(Juice):"""使用巴西橙子制作的美味果汁"""T=......
  • Gson读取json字符串中结果需要转泛型的情况解决方案
    原始代码:Gsongson=newGson();ArrayList<Fld>fixed=gson.fromJson(newFileReader(headFilePath),ArrayList.class);for(Fldfld:fixed){intfld_len=fld.getFld_len();}错误显示:com.g......
  • 通过重载签名来实现泛型不易实现的写法
    问题:实现一个TS方法,多个字符转或者多个数字相加首先会想到用泛型实现例如letsum=<T>(a:T,b:T):T=>a+b 但是这样会报“运算符+不可用于类型T”接下来我们可能会想到给类型T加上限制typeSunType=string|number;letsum=<TextendsSunType>(a:T,......
  • Java中的泛型概念
    在Java中,泛型是一种强类型检查机制,它允许我们在编译时期指定类、接口或方法的参数和返回值类型。使用泛型可以实现代码的重用性、类型安全性和提高代码的可读性。下面是关于Java泛型的一些重要概念和用法:泛型类(GenericClass):通过在类名后面使用尖括号<T>来声明一个泛型类,在类......
  • 数据变更事件,泛型类,体会其中思想
    数据变更事件namespaceFeng.FramWorkDesign{publicclassBindableProperty<T>whereT:IEquatable<T>{privateTmValue=default(T);publicTValue{get{returnmValue;}......
  • typeScript学习-泛型
    typeScript学习泛型为什么要用泛型?泛型定义。泛型在类中的应用?封装一个面向对象的ArrayList类。泛型默认值。泛型约束。泛型在Vue3源码中的应用。exendskeyof+keyof的联合应用。泛型反向赋值。具有以下特点的数据类型叫泛型:特点一:定义时不明确使用时必须明确成某......