位置: 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(权重下降是什么原因)

  • 怎样利用seo做软文推广布局(seo软件推荐)

    怎样利用seo做软文推广布局(seo软件推荐)

  • 魅族18spro电池多大(魅族18x电池)

    魅族18spro电池多大(魅族18x电池)

  • ppt如何设置超链接播放视频(ppt如何设置超链接到下一张ppt)

    ppt如何设置超链接播放视频(ppt如何设置超链接到下一张ppt)

  • 苹果8p屏幕间歇性失灵(苹果8p屏幕间歇闪烁)

    苹果8p屏幕间歇性失灵(苹果8p屏幕间歇闪烁)

  • 微信为什么变成0位联系人了(微信为什么会变成听筒播放)

    微信为什么变成0位联系人了(微信为什么会变成听筒播放)

  • 微机操作系统可以分为哪三种(微机操作系统可以分为)

    微机操作系统可以分为哪三种(微机操作系统可以分为)

  • 钢化膜用久了边缘出现气泡(钢化膜用久了边缘出现气泡需要更换吗)

    钢化膜用久了边缘出现气泡(钢化膜用久了边缘出现气泡需要更换吗)

  • 为什么搜抖音号搜不到人(为什么搜抖音号看不到作品)

    为什么搜抖音号搜不到人(为什么搜抖音号看不到作品)

  • 怎样找回被移除的粉丝(怎样找回被移除的粉丝微博)

    怎样找回被移除的粉丝(怎样找回被移除的粉丝微博)

  • 5g手机什么时候出(5g手机什么时候出来的)

    5g手机什么时候出(5g手机什么时候出来的)

  • 巧影引擎初始化失败原因(巧影windows)

    巧影引擎初始化失败原因(巧影windows)

  • 微信号找不回来钱包钱怎么办(微信号找不回来里面的钱怎么办)

    微信号找不回来钱包钱怎么办(微信号找不回来里面的钱怎么办)

  • 三星s10锁屏后收不到微信(三星s10锁屏收不到微信)

    三星s10锁屏后收不到微信(三星s10锁屏收不到微信)

  • 快手如何下载视频(快手如何下载视频到本地)

    快手如何下载视频(快手如何下载视频到本地)

  • net网络接入点是什么意思(接入点net怎么设置)

    net网络接入点是什么意思(接入点net怎么设置)

  • 爱奇艺ios和安卓能共用吗(爱奇艺ios和安卓记录一样么)

    爱奇艺ios和安卓能共用吗(爱奇艺ios和安卓记录一样么)

  • 扫福可以在微信上扫吗(扫福怎么扫)

    扫福可以在微信上扫吗(扫福怎么扫)

  • wps表格删除单独线(wps表格删除单独一页内容)

    wps表格删除单独线(wps表格删除单独一页内容)

  • qq里的扩列什么意思(qq扩列什么用)

    qq里的扩列什么意思(qq扩列什么用)

  • 荣耀20yoyo怎么改名字(华为荣耀20yoyo可以改名字吗)

    荣耀20yoyo怎么改名字(华为荣耀20yoyo可以改名字吗)

  • qq号注销后是什么样子(qq号注销后是什么样子图片)

    qq号注销后是什么样子(qq号注销后是什么样子图片)

  • 苹果三指操作怎么关闭(苹果三指操作怎么设置复制粘贴)

    苹果三指操作怎么关闭(苹果三指操作怎么设置复制粘贴)

  • qq删好友火花会消失吗(qq好友删好友火花还在吗)

    qq删好友火花会消失吗(qq好友删好友火花还在吗)

  • vivo手机怎么退出界面(vivo手机怎么退回老系统)

    vivo手机怎么退出界面(vivo手机怎么退回老系统)

  • pr如何加音乐(pr如何加音乐视频)

    pr如何加音乐(pr如何加音乐视频)

  • 港版iphonexr支持电信吗(iphonexr港版支持三网吗)

    港版iphonexr支持电信吗(iphonexr港版支持三网吗)

  • 电脑睡眠唤醒教程(电脑睡眠唤醒教程视频)

    电脑睡眠唤醒教程(电脑睡眠唤醒教程视频)

  • DEDECMS问答模块rewrite伪静态设置教程(问答系统网站模板)

    DEDECMS问答模块rewrite伪静态设置教程(问答系统网站模板)

  • 应纳税所得额100万以内,税负2.5%是什么意思
  • 企业的罚款支出包括违约金吗
  • 售卖会卡,达标返现,怎么进行账务处理
  • 牵引车和挂车都要购买交强险吗
  • 资金过桥怎么操作
  • 其他综合收益影响递延所得税负债吗
  • 车船抵扣如何填报
  • 销项负数发票原发票还有用吗?
  • 企业想成为退税商店需具备哪些条件
  • 外商投资企业合并
  • 商业承兑汇票有风险吗
  • 预付卡销售和充值属于什么费用
  • 购买毛巾的费用是多少
  • 财务软件期初数据录入
  • 预售 首付
  • 个体户要申报
  • 500元以下不需要发票
  • php中substr_replace
  • 怎么安装win7系统u盘
  • 支付宝花呗服务费收费标准
  • 没按时报税罚款多少
  • 诺曼底作战
  • PHP:pcntl_setpriority()的用法_PCNTL函数
  • php _dir_
  • 在生产经营过程中违反什么规定
  • 销售成本属于销售收入吗
  • pytorch基本操作
  • cnn数据集
  • pytorch csdn
  • python,array
  • 退回的货款应该记什么费用
  • 个体工商户城市维护建设税
  • python的基本风格
  • 短期投资理财是
  • 借支差旅费属于什么科目
  • 资产减值损失如何计算
  • 银行托管账户的规定有哪些
  • 以美元报关是否要交税
  • db2 insert timestamp
  • mysql 子查询
  • 使用银行汇票的结算方式
  • 常见的防暑降温药有
  • 企业所得税退还账务处理
  • 企业开负数发票退货后如何处理?
  • 发票报销有限制吗
  • 长期待摊费用包含的内容
  • 暂估商品入库 后收到发票怎么做分录
  • 公司的零星费用可以用对公转吗
  • 固定资产会计账簿
  • 发现错账后进行错账更正的方式
  • 库存商品属于资产类科目吗
  • 营业执照怎么办理注销
  • 无形资产的研发支出
  • 个人生产经营所得税怎么申报
  • 待摊费用是什么意思
  • 工业企业无形资产有哪些
  • 会计中的资金
  • sql1068错误
  • mysql四个事务的四个特性
  • sql server备份方法
  • 够拼了 安装Win8.1过程中出现预约Win10升级提示
  • 提高搜索引擎检索效果的方法
  • windowsxp的快捷键
  • ubuntu ifdown
  • winxp系统安装教程
  • win10弹出提示
  • xp启动加速
  • 电脑开机显示xp后无反应
  • win10无u盘装系统教程
  • win8.1玩游戏好不好
  • opengl自学
  • rhel7.6安装
  • linux命令及含义
  • unity 案例
  • shell脚本用法
  • javascript的语句
  • 《javascript高级程序设计》
  • 新能源办理免税的过程需要多长时间
  • 江西省税务总局官网
  • 诊所备案申请表在哪下载
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设