位置: IT常识 - 正文

TS中的泛型(泛型 static)

编辑:rootadmin
TS中的泛型 文章目录一、泛型是什么?有什么作用二、泛型用法2.1 在函数中使用泛型2.2 在接口中使用泛型2.3 在类中使用泛型三、泛型约束3.1使用接口约束泛型3.2 数组泛型四、泛型工具类型4.1 Partial4.2 Record4.3 Pick4.4 Exclude4.5 ReturnType一、泛型是什么?有什么作用

推荐整理分享TS中的泛型(泛型 static),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:t 泛型,t 泛型,ts泛型传入多个参数,mapstruct 泛型,ts泛型传入多个参数,ts中的泛型作用,t 泛型,ts泛型传入多个参数,内容如对您有帮助,希望把文章链接给更多的朋友!

当我们定义一个变量不确定类型的时候有两种解决方式:

使用any 使用any定义时存在的问题:虽然 以 知道传入值的类型但是无法获取函数返回值的类型;另外也失去了ts类型保护的优势使用泛型 泛型指的是在定义函数/接口/类型时,不预先指定具体的类型,而是在使用的时候在指定类型限制的一种特性。二、泛型用法2.1 在函数中使用泛型function test <T> (arg:T):T{ console.log(arg); return arg;}test<number>(111);// 返回值是number类型的 111test<string | boolean>('hahaha')//返回值是string类型的 hahahatest<string | boolean>(true);//返回值是布尔类型的 true

使用方式类似于函数传参,传什么数据类型,T就表示什么数据类型, 使用表示,T也可以换成任意字符串。

2.2 在接口中使用泛型// 注意,这里写法是定义的方法哦interface Search { <T,Y>(name:T,age:Y):T}let fn:Search = function <T, Y>(name: T, id:Y):T { console.log(name, id) return name;}fn('li',11);//编译器会自动识别传入的参数,将传入的参数的类型认为是泛型指定的类型2.3 在类中使用泛型class Animal<T> { name:T; constructor(name: T){ this.name = name; } action<T>(say:T) { console.log(say) }}let cat = new Animal('cat');cat.action('mimi')三、泛型约束3.1使用接口约束泛型interface Person { name:string; age:number;}function student<T extends Person>(arg:T):T { return arg;}student({name:'lili'});//类型 "{ name: string; }" 中缺少属性 "age",但类型 "Person" 中需要该属性student({ name: "lili" , age:'11'});//不能将类型“string”分配给类型“number”student({ name: "lili" , age:11});3.2 数组泛型TS中的泛型(泛型 static)

let arr:Array<number> =[1,2,3] === let arr:number[]=[1,2,3]

四、泛型工具类型4.1 Partial

partial<T>的作用就是将某个类型中的属性全部变为可选项? 示例:

interface Person { name:string; age:number;}function student<T extends Person>(arg: Partial<T>):Partial<T> { return arg;}4.2 Record

Record<K extends keyof any, T>的作用是将K中所有的属性转换为T类型;示例:

interface PageInfo { title: string}type Page = 'home'|'about'|'other';const x: Record<Page, PageInfo> = { home: { title: "xxx" }, about: { title: "aaa" }, other: { title: "ccc" },};4.3 Pick

Pick<T, K extends keyof T>的作用是将某个类型中的子属性挑出来,变成包含这个类型部分属性的子类型,示例:

interface Todo { title:string, desc:string, time:string}type TodoPreview = Pick<Todo, 'title'|'time'>;const todo: TodoPreview ={ title:'吃饭', time:'明天'}4.4 Exclude

Exclude<T,U>的作用是将某个类型中属于另一个类型的属性移除掉,示例:

type T0 = Exclude<"a" | "b" | "c", "a">; // "b" | "c"const t:T0 ='b';4.5 ReturnType

returnType<T>的作用是用于获取函数T的返回类型,示例:

type T0 = ReturnType<() => string>; // stringtype T1 = ReturnType<(s: string) => void>; // voidtype T2 = ReturnType<<T>() => T>; // {}type T3 = ReturnType<<T extends U, U extends number[]>() => T>; // number[]type T4 = ReturnType<any>; // anytype T5 = ReturnType<never>; // anytype T6 = ReturnType<string>; // Errortype T7 = ReturnType<Function>; // Error

暂时先了解这么多,后续继续补充…

本文链接地址:https://www.jiuchutong.com/zhishi/298333.html 转载请保留说明!

上一篇:作为大学生,你还不会搭建chatGPT微应用吗?(作为大学生你能为国家安全贡献哪些力量论文)

下一篇:权重衰减/权重衰退——weight_decay(权重下降是什么原因)

  • 增值税纳税申报表模板
  • 办税员可以购票吗?
  • 23年一般纳税人税收政策是什么
  • 附加税减半征收的条件
  • 环保税计税依据怎么算
  • 缴纳的增值税如何申请退税
  • 工程结算扣罚款怎么开票
  • 个税填报后怎么撤销申报
  • 应付中转是什么科目
  • 以前减记存货价值的影响因素是什么意思
  • 小规模纳税人季报还是月报?
  • 无形资产日常维护支出会计处理
  • 申办企业所得税抵缴带哪些资料?
  • 没进项发票要交多少税
  • 民非企业补贴收入要缴纳增值税会计分录怎么写?
  • 2018年终奖个人所得税计算器公式
  • 预交印花税会计分录
  • 无租使用房产怎么缴纳房产税土地税
  • 企业存货跌价准备一经计提在以后会计期间不得转回
  • 个人交社保可以交生育险吗
  • 延期报税申请怎么操作
  • win11怎么用win10界面
  • PHP CURL CURLOPT参数说明(curl_setopt)
  • 企业发放职工薪酬的账务处理例子
  • linux sed -s
  • 个人所得税计提和发放分录
  • Micheldever Wood的蓝铃花,英国汉普郡 (© Hursley/Getty Images Plus)
  • 小规模纳税人补缴企业所得税分录
  • 办公楼装修费两万合理吗
  • 阿里云盘 icloud
  • vscode+live server——更改端口号——基础积累
  • 【第二趴】uni-app开发工具(手把手带你安装HBuilderX、搭建第一个多端项目初体验)
  • 30多岁应该怎么说
  • Python如何检测两个相同的列表
  • 办完外经证怎么交税
  • 自建厂房流程
  • 认证发票可以分两次进行吗
  • php中使用什么函数来定义常量
  • chrome插件开发拦截ajax
  • 以前年度未处理的业务
  • 长期股权投资减值准备是什么科目
  • 公司借款利息可以约定由某一股东承担
  • 公司注销章子要盖章吗
  • 个税汇算清缴是退税吗
  • 税局代开专票对方隔月退回重开如何做账务处理呢?
  • 刚购入的固定资产已使用年限怎么填
  • 开经销商公司要多少钱
  • 公司账户转账给个人要交税吗
  • 工资每月变动社保怎么变
  • 外购货物分配给股东
  • 企业购买固定资产要交什么税
  • 过节费可以发现金吗
  • 什么叫临建工程
  • 考试出题
  • 实收资本是什么公司
  • sqlserver 表分区工具
  • 请问linux
  • vista升级选项灰色
  • win8系统摄像头怎么打开
  • windows 8.1更新
  • awk 筛选有特定字符
  • iptables添加规则立即生效
  • win8双系统安装教程
  • linux crontab用法
  • linux备份的文件bak如何恢复
  • jasonToObject
  • 关于shell的说法,不正确的是
  • linux shell执行命令
  • python 网络编程培训
  • 批处理应用实例
  • 关于ie浏览器下面说法正确的是
  • jquery对象可以直接使用dom吗
  • JavaScript中Math.SQRT2属性的使用详解
  • python爬虫程序下载网页上内容
  • 用python编写的程序称为
  • 违法的税务记录怎么消除
  • 单位税额怎么算出来的
  • 河南查询税务登记怎么查
  • 税务催报通知书怎么接收
  • 2021年河南医保
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设