当前位置: 首页 > wzjs >正文

网站托管平台东莞营销型高端网站建设

网站托管平台,东莞营销型高端网站建设,运营一个企业网站的推广方案,注册公司找黄牛一般多少钱泛型的引入增强了TS类型表达能力,使用泛型的类型就像使用参数的函数,可以将不变的部分固定下来,变的部分通过参数根据不同需要为参数赋不同值。 泛型的基础使用 泛型的主要作用于关联两个变量,甚至文档中说”如果一个泛型变量没…

泛型的引入增强了TS类型表达能力,使用泛型的类型就像使用参数的函数,可以将不变的部分固定下来,变的部分通过参数根据不同需要为参数赋不同值。

泛型的基础使用

泛型的主要作用于关联两个变量,甚至文档中说”如果一个泛型变量没有出现在两个地方,那么就需要再考虑一下引入泛型的必要性。“

问题1:当要求函数入参和出参类型保持一致,入参是number类型返回值也要是number类型,当是string类型返回值也要是string类型时:

type fn = (arg: any) => any

这样的表达可以满足要求,但是当入参是string出参同样可以是number,入参和出参之间需要一致的关系没有表达出来。

type fn = <T>(arg: T) => T

引入泛型后可以满足要求,因为泛型T表达了入参和出参需要保持一致,都是类型T

泛型约束

在问题1的基础上进行优化,要求函数入参类型为number | string 且要求入参和出参保持一致,使用泛型实现如下:

type fn = <T extends number | string>(arg: T) => T

约束泛型只能是string | number类型,入参其他类型编译会报错。

泛型约束传播

泛型没有约束时默认值为unknow,一旦添加约束后泛型就就表现为约束类型,这种现象被称为泛型约束传播。

unknow类型变量可以被赋值任意类型,但是无法对unknow类型变阿玲进行任意操作。如果吧any类型分为任意写和任意读,那么unknow具有了any的一半能力”任意写“。

type fn = <T extends string>(arg: T) => voidconst f: fn = (arg) => arg.toUpperCase()

以上例子类型T被从unknow约束成类型string所以即使没有赋值类型,也可以在函数体内正对类型T的变量调用toUpperCase()方法。
为什么在上面例子中type fn的返回值是void而不是T

type fn = <T extends string>(arg: T) => T
const f: fn = (arg) => arg.toUpperCase()

因为泛型变量Tstring类型子元素,T可能是具体类型例如"Type"字符串,而toUpperCase返回值是string类型,匹配不上所以报错,但是和阐述的泛型约束传播无关,所以修改了例子。

type fn = <T extends {a: string}>(arg: T) => voidconst f: fn = (arg) => console.log(arg.a)

同样不会报错,因为泛型T被约束为类型{a: string}所以获取变量arga属性并不会报错。

泛型中的类型推断infer关键字

泛型中infer配合extends条件为真的子句可以提取类型,是通过类型生成类型的一种方式。

type Example<T> = T extends { x: infer R } ? R : never;type example = Example<{x: string}> // type example = string

infer R可以提取x对应的类型string,infer使用时需要注意以下几点:

  1. infer只能和extends配合使用,无法单独使用type Invalid<T> = infer R; // ❌ 错误:infer必须配合extends
  2. infer只能使用在extends为真的子句内type Example<T> = T extends { x: infer R } ? R : never;
    ReturnType<Type> 的实现方式
type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any

泛型中的协变与逆变

高级内容待补充

总结:

  1. 泛型使用场景为关联多个变量类型,防止额外信息丢失。
  2. 泛型约束,泛型本身默认为unknow,添加约束后,将类型具象化为约束目标类型。
  3. 泛型配合关键字extendsinfer可以提取类型中的类型生成新的类型。
  4. 泛型中的逆变与协变研究中。

文章转载自:

http://wUObK4dp.kgphd.cn
http://lQtvNjCp.kgphd.cn
http://Ibhnozmc.kgphd.cn
http://LxBSsShM.kgphd.cn
http://qmraW8bw.kgphd.cn
http://aT9Uq7Kz.kgphd.cn
http://0o41yMtN.kgphd.cn
http://X6qLTNzt.kgphd.cn
http://U87ugTLN.kgphd.cn
http://ier6yv5m.kgphd.cn
http://WdFGvCTD.kgphd.cn
http://GWdHn6Vj.kgphd.cn
http://L8FznnZf.kgphd.cn
http://uqzUOcWZ.kgphd.cn
http://5uWRSkEd.kgphd.cn
http://7dlNYNms.kgphd.cn
http://epZZBGJJ.kgphd.cn
http://HZdnW6Hs.kgphd.cn
http://iufFkAm1.kgphd.cn
http://Ah9Jfv0h.kgphd.cn
http://dZsv0jiH.kgphd.cn
http://ZamW8ucw.kgphd.cn
http://N7jancYa.kgphd.cn
http://xg8942ps.kgphd.cn
http://LhqXgcH7.kgphd.cn
http://vFGLPb1U.kgphd.cn
http://cys5Pz5V.kgphd.cn
http://l3G6iNSt.kgphd.cn
http://xCnj1Zr6.kgphd.cn
http://fHGqYcwP.kgphd.cn
http://www.dtcms.com/wzjs/731768.html

相关文章:

  • 运营一个网站的成本友情链接搜读
  • 网站数据库建设access做电视的视频网站
  • 遵义网站优化青岛网站建设咨询
  • 网上如何做网站洪梅镇仿做网站
  • 济南企业建站改行做网站
  • 企业官网门户网站管理系统网站菜单导航怎么做
  • 做商务网站公司代码实现wordpress百度地图
  • 做网站深圳企业网站公告怎么做
  • 青岛做网站推广网站开发 教材
  • 如何创建自己的网站黄页网站推广公司
  • 沈阳网站建设哪家做得好如何推广网站运营
  • 免费图片制作网站模板夜晚必备直播软件
  • 上海网站建设公司wordpress 播放
  • 网站搭建技术方案网站运营 宣传团队建设
  • 科技企业网站建设抖音seo排名优化软件
  • 网站创建数据库wordpress 响应式教程
  • 专业微信网站建设wordpress通过id获取文章
  • 工业设计外包平台网络seo优化服务
  • 网站搭建免费企业网站推广 知乎
  • 石家庄建设局网站网站建设齐齐哈尔
  • 自己可以做拼单网站吗域名网站建设
  • 企业网站数据库网站正在建设中模板 html
  • 海关总署2018年海关网站建设上交所互动平台
  • 建设网站iss建企业网站要多少钱
  • mc做图的网站如何弄一个自己的网站
  • 响应式网站如何实现c语言基础知识入门
  • 网站建设ssc源码最新泉州seo搜索优化合作
  • 教育培训门户网站源码商务网站建设注意事项
  • 怎么在网站后台删除图片策划书网页设计方案
  • 12380网站的建设情况哪建设网站好