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

哪些网站的做的好看保定网站建设多少钱哪家好

哪些网站的做的好看,保定网站建设多少钱哪家好,精神文明建设网站专栏,怎么建立一个网站能够与讯飞云对话概述 在 TS 中#xff0c;infer 是一个高级类型操作#xff0c;特别是条件类型和映射类型中非常有用的关键字它在泛型中使用也会是一个强大工具#xff0c;增强了类型推断的能力#xff0c;让开发者更灵活地处理和操作类型它允许在泛型类型推导过程中捕获一个具体的类型infer 是一个高级类型操作特别是条件类型和映射类型中非常有用的关键字它在泛型中使用也会是一个强大工具增强了类型推断的能力让开发者更灵活地处理和操作类型它允许在泛型类型推导过程中捕获一个具体的类型这对于编写复杂的类型转换和映射操作特别有用infer 的定义 infer 表示在 extends 条件语句中以占位符出现的用来修饰数据类型的关键字被修饰的数据类型等到使用时才能被推断出来 infer 占位符式的关键字出现的位置 infer 出现在 extends 条件语句后的函数类型的参数类型位置上infer 出现在 extends 条件语句后的函数类型的返回值类型上infer 出现在类型的泛型具体化类型上 实现 1 infer 出现在 extends 条件语句后的函数类型的参数类型位置上 // 定义了一个接口Customer它描述了一个具有name字符串类型和moneyPaid数字类型属性的对象 interface Customer {name: stringmoneyPaid: number }// 定义了一个函数类型接受一个Customer类型的参数并返回一个字符串 type custFuncType (cust: Customer) string// 定义了一个泛型类型inferTypeT这是理解的重点。这是一个条件类型它使用了infer关键字 type inferTypeT T extends (params: infer P) any ? P : T// 定义了inferResultType类型别名它是通过将前面定义的custFuncType类型作为参数传递给inferType得到的 type inferResultType inferTypecustFuncType分析一下这行代码type inferTypeT T extends (params: infer P) any ? P : T T extends (params: infer P) any 这部分是一个类型测试检查T是否可以赋值给一个函数类型该函数接受一个参数我们称之为paramsinfer P关键字在这里用于声明一个新的类型变量P用来捕获T中函数参数的实际类型 ? P 如果上面的测试为真即T确实是一个函数类型那么整个条件类型的结果就是捕获的参数类型P : T 如果上面的测试为假即T不是函数类型或不匹配则条件类型的结果就是T本身不做任何改变 最后一行代码 type inferResultType inferTypecustFuncType custFuncType是一个接受Customer类型参数的函数所以infer P会捕获到这个参数类型因此inferResultType 实际上就是Customer类型 2 ) infer 出现在 extends 条件语句后的函数类型的返回值类型上 // 定义了一个接口Customer它描述了一个具有name字符串类型和moneyPaid数字类型属性的对象 interface Customer {custname: stringmoneyPaid: number } // 这个类型定义了一个函数该函数接受一个Customer类型的参数并返回一个字符串 type custFuncType (cust: Customer) string type inferTypeT T extends (params: any) infer P ? P : T type inferResultType inferTypecustFuncType核心在这里 type inferTypeT T extends (params: any) infer P ? P : T 上面inferType 的 infer 在返回值的位置上infer P 表示“推断出一个类型 P”这个 P 是函数的返回类型它根据 extends 的检查结果来选择不同的类型如果 T 是一个符合 (params: any) … 形式的函数类型那么表达式的结果是 P即函数的返回类型否则表达式的结果是 T 本身 最后type inferResultType inferTypecustFuncType 由于custFuncType 是一个返回值为 string 的函数类型符合inferType 内部的三元推导的条件因为 返回值是 P, 而在这里P又是 string 类型所以type inferResultType 就是 string 类型 3 infer 出现在类型的泛型具体化类型上 class Subject {constructor(public id: number, public name: string) {} }const chineseSubject new Subject(100, 语文); const mathSubject new Subject(101, 数学);type ElementOfSetT T extends Setinfer E ? E : never;const subjectsSet new SetSubject([chineseSubject, mathSubject]);type SubjectType ElementOfSettypeof subjectsSet;// 使用推断出的SubjectType类型 function printSubject(subject: SubjectType) {console.log(学科ID: ${subject.id}, 学科名称: ${subject.name}); }printSubject(chineseSubject);核心代码在这里type ElementOfSetT T extends Setinfer E ? E : never; 如果 参数 T 属于 Set 类型则 ElementOfSet 则是 E 的类型这里 Setinfer E 使用 infer E 推导出 E的类型如果符合 extends 条件则返回E否则返回 never const subjectsSet new SetSubject([chineseSubject, mathSubject]); 这里 subjectsSet 是一个 Set 类型而且单个元素是 Subject 类型 type SubjectType ElementOfSettypeof subjectsSet; ElementOfSettypeof subjectsSet 这里符合内部条件所以它最终是一个 Subject 类型 所以在最后printSubject 中完美运行 总结 infer关键字在TypeScript中为泛型编程提供了一个强大的工具它不仅增强了类型系统的表达能力还使开发者能够编写出更加灵活和精确的类型定义通过掌握infer的使用你能够在处理复杂类型逻辑和类型转换时更加游刃有余提升代码的类型安全性和可维护性
http://www.dnsts.com.cn/news/122263.html

相关文章:

  • 舟山建设管理网站黄冈网站建设哪家专业
  • 温州手机网站开发国企公司网站制作
  • 数码产品商城网站建设苏州哪里有做淘宝网站的
  • 网站问题seo解决方案海淀网站建设
  • 公司网站推广的方法html 修改 wordpress
  • 山东烟台城乡建设学校官方网站wordpress iis 分页 404
  • 外贸电子商务网站建设快懂百科登录入口
  • 一起做网站女装夏季如东做网站公司
  • 淄博网站建设公司坪地网站制作
  • 做网络推广选择网站闵行交大附近网站建设
  • 做设计开店的网站自建网站系统
  • 免费企业网站建设wordpress首页设置
  • 网络口碑推广公司江西短视频seo搜索报价
  • 工会网站建设上海购房网官网
  • 电商网站通用左侧弹出导航做网站gif代码
  • 在县城做同城网站怎么样营销网站制作费用
  • 北京网页设计师工资有多少厦门谷歌seo公司
  • 临沂网站公众号建设装修设计公司官网
  • 网站站内的seo怎么做兰州网站建设公
  • 网站登录系统怎样做网站建设移动端是什么意思
  • 网站开发合同中的知识产权条款可以注册公司的地址
  • 有关电子商务网站建设与维护的书籍番禺建设网站企业
  • 做模型的网站有哪些内容网页设计与制作教程题库
  • 艺术家个人网站设计上海app定制
  • Wordpress垂直类目站模版软件编程工具
  • 做预算查价格的网站是哪个福州企业做网站
  • 移动网站 制作六安建设机械网站
  • asp手机网站开发教程电子商务网站建站流程
  • 英语网站建设公司企业网站优化怎么提高关键词排名
  • 做网站1核1g服务器够吗简单网页布局的html代码