首页 > 其他分享 >ts泛型08

ts泛型08

时间:2024-02-21 18:47:07浏览次数:18  
标签:console log arrValue 08 ts value number 泛型

泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性

 

// 需求:定义一个函数,传入两个参数,第一个参数是数据,第二个参数是数量,
// 函数的作用:根据数量产生对应个数的数据,存放在一个数组中
function GetaArr<T>(value: T, count: number): T[] {     //T:任意类型数值
    const arrValue: T[] = []
    for (let i = 0; i < count; i++) {
        arrValue.push(value)
    }
    return arrValue
}
//不建议使用any
// 使用泛型的话,在定义的时候不需要先确定好类型,等到使用的时候再去确定
// 如果没有使用的话,就会走自动推断
console.log(GetaArr(99, 3))
console.log(GetaArr<string>("99", 3))

// 多个泛型互换
function PostArr<T, U>(t: [T, U]): [U, T] {     //T:任意类型数值
    return [t[1], t[0]]
}
console.log(PostArr<string, number>(["99", 3]))
console.log(PostArr<number, string>([3, "99"]))

// 泛型约束
interface Xlength {
    length: number
}
function ArrLength<T extends Xlength>(x: T): number {
    return x.length
}
console.log(ArrLength("123456789"))

// 泛型接口
interface IArr {
    <T>(value: T, count: number): Array<T>
}
let portArr: IArr = function <T>(value: T, count: number): T[] {     //T:任意类型数值
    const arrValue: T[] = []
    for (let i = 0; i < count; i++) {
        arrValue.push(value)
    }
    return arrValue
}
console.log(portArr("9999", 9))

class Pers<T>{
    constructor(public name: T, public age: T) { }
}
const person1 = new Pers<string>("111", "222")
const person2 = new Pers<number>(111, 222)
const person3 = new Pers<string | number>("111", 222)
console.log(person1)
console.log(person2)
console.log(person3)

  

标签:console,log,arrValue,08,ts,value,number,泛型
From: https://www.cnblogs.com/wencaiguagua/p/18025822

相关文章

  • TCL学习:First Class Tcl Objects and Relationships
    前言:最近需要移植vivado工程到新板卡上。之前只学了基础TCL语法,复杂一点的指令看博客看文档对陌生名词挠头。才发现官方文档VivadoDesignSuiteTclCommandReferenceGuide(UG835)第一章的FirstClassTclObjectsandRelationships对Vivado用到的TCL的指令做了很好的知识铺......
  • TS学习随笔
    1,ts是什么TypeScript是JavaScript的超集,这意味着它可以完成JavaScript所做的所有事情,而且额外附带了一些能力。TypedJavaScriptatAnyScale.它强调了TypeScript的两个最重要的特性——类型系统、适用于任何规模。 JavaScript本身是一种动态类型语言,这意味着变量可......
  • WMTS API——wmts1.0.0.htm
    WMTS,Web地图瓦片服务(WebMapTileService)当前版本是1.0.0。WMTS标准定义了一些操作,这些操作允许用户访问瓦片地图。WMTS可能是OGC首个支持RESTful访问的服务标准。参考:https://baike.baidu.com/item/WMTS/1091367?fr=ge_alaArcGISServer10.1之服务新特性(WMTS1.0.0)ArcGISServ......
  • ssts-hospital-web-master项目实战记录五:集成第三方库
    1.Vue-Router的集成在Vue.js+TypeScript项目中集成Vue-Router,具体的步骤如下。第一步:新建页面组件在src/views目录下分别新建main/main.vue、login/login.vue、not-found/not-found.vue三个页面组件。main.vue组件代表首页,代码如下所示:<scriptsetuplang="ts"></script>......
  • 初中英语优秀范文100篇-086The Person Who Has Influenced Me Most-对我影响最大的人
    PDF格式公众号回复关键字:SHCZFW086记忆树1Mymotheristhepersonwhohasinfluencedmemost.翻译我的母亲是对我影响最大的人简化记忆母亲句子结构主语Mymother作为主语,明确指出了影响说话者最大的人是“我的母亲系动词is系动词,用于连接主语和表语,表示主......
  • redis自学(2)IntSet
    IntSetIntSet是redis中set集合的一种实现方式,基于整数数组来实现,并且具备长度可变、有序等特征。  可能会有疑惑,int8_t的数组contents只有1个字节,怎么可能存的下数组,其实这里的contents存储的只是指向真正数组的指针。IntSet的取值范围大小,实际上是由encoding属性决定的......
  • ssts-hospital-web-master项目实战记录四:主要配置
    记录时间:2024-02-211.配置浏览器自动打开配置文件:package.json "scripts":{  "dev":"vite--open" } 2.配置src别名(1)安装@types/node输入npm命令npm i@types/node--save-dev(2)配置文件:vite.config.tsimport{defineConfig}from'vite&#......
  • ssts-hospital-web-master:项目开发规范
    在企业项目开发中,通常由多人一起协作完成开发任务,每个人编写的代码风格可能不统一。为了避免出现问题,一般会制定一些规范来约束整个项目的编码风格,包括编辑器规范、代码格式规范、编写代码规范、Git提交规范、命名规范等。这些规范可以帮助团队保持一致的代码风格,提高代码的可......
  • python实战:用requests+json抓取接口
    一,安装requests1,用pip安装(venv)liuhongdi@192news%pip3installrequests2,查看所安装库的版本:(venv)liuhongdi@192news%pip3showrequestsName:requestsVersion:2.31.0Summary:PythonHTTPforHumans.Home-page:https://requests.readthedocs.ioAu......
  • [WC/CTS2024] 水镜
    [WC/CTS2024]水镜不知道大家还记不记得这样一件事情:当我们要证明一个数列\(\{a_n\}\)单调递增时,只需证\(a_i<a_{i+1}\)。这是我场上的核心思路:如果要说明二元组\((u,v)\)合法,只需使得其中每相邻两项都递增。注意到这题的\(L\)是我们自己定的,所以这里就有一个思路:......