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

大型网站开发公司个人网站建设的要点

大型网站开发公司,个人网站建设的要点,怎么投诉网站制作公司,宣传片拍摄应急预案ReturnType 在TypeScript中,ReturnType 是一个内置的条件类型(Conditional Type),它用于获取一个函数返回值的类型。这个工具类型非常有用,特别是当你需要引用某个函数的返回类型,但又不想直接写出那个具体…

ReturnType

在TypeScript中,ReturnType 是一个内置的条件类型(Conditional Type),它用于获取一个函数返回值的类型。这个工具类型非常有用,特别是当你需要引用某个函数的返回类型,但又不想直接写出那个具体的类型时。

ReturnType 的基本语法如下:

type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;

例如,如果你有一个函数createApp,它是Vue 3中用于创建Vue应用实例的函数,你可以这样使用ReturnType来获取它的返回类型:

import { createApp } from 'vue';  // 假设App是一个Vue组件  
import App from './App.vue';  // 使用ReturnType获取createApp的返回类型  
type VueApp = ReturnType<typeof createApp>;  const app: VueApp = createApp(App);  // 现在app的类型是VueApp,它实际上是createApp函数的返回类型  
// 在Vue 3中,这通常是一个具有mount、component、directive等方法的对象  // 如果你有一个函数需要接受这样的Vue应用实例作为参数  
function useApp(appInstance: VueApp) {  // ...  
}  // 你可以安全地将app传递给这个函数  
useApp(app);

注意,ReturnType 只能用于函数类型。如果你尝试将它用于非函数类型,TypeScript会报错。createApp是Vue库的一部分,并且Vue库是用TypeScript编写的,所以ReturnType能够准确地推断出Vue应用实例的类型。

了解释这个类型定义,我们可以将其分解为几个部分:

  • 泛型约束:T extends (…args: any[]) => any
    这部分定义了一个泛型T,它必须是一个函数类型。这个函数类型可以接受任意数量和类型的参数(由(…args: any[])表示),并返回任意类型的值(由=> any表示)。这是ReturnType能够工作的前提,即它只能用于函数类型。

  • 条件类型:T extends (…args: any[]) => infer R ? R : any
    条件类型允许TypeScript根据某个条件来解析类型。在这个例子中,条件是T(一个函数类型)是否可以被视为一个具有特定签名(即接受任意参数并返回某个值的函数)的类型。如果T满足这个条件(实际上,由于泛型约束,它总是满足的),那么TypeScript将使用infer关键字来推断出函数的返回类型,并将其赋值给R。然后,条件类型的“真”分支(即?后面的部分)就是R,即函数的返回类型。

如果T不满足条件(但实际上由于泛型约束,这种情况不会发生),则条件类型的“假”分支(即:后面的部分)将被使用,这里是any。但在ReturnType的定义中,由于有泛型约束,所以“假”分支实际上永远不会被执行。

  • 类型别名:type ReturnType<…> = …
    最后,整个表达式被定义为一个类型别名ReturnType,它接受一个泛型参数T,并返回该函数的返回类型。

在TypeScript中,infer R表示在条件类型(conditional types)中引入的一个待推断的类型变量。这个变量R用于在条件类型的真实分支中引用,以推断出待推断的类型。infer是TypeScript 2.8及以后版本中引入的一个关键字,它允许在条件类型中进行类型推导,从而实现更灵活和可复用的类型定义。

具体来说,当在extends子句中使用infer时,infer R(其中R可以是任意标识符)用于从满足某个条件的类型中推断出具体的类型。

http://www.yayakq.cn/news/278709/

相关文章:

  • 网站 公司优化游戏性能的软件
  • 汽车网站建设开题报告吉安网络科技有限公司
  • 做相册哪个网站好如何做网站页面
  • 宝丰网站制作公司传奇霸业网页游戏开服
  • 营销型网站标准网页源码wordpress点击文字弹窗
  • 河南建站网站中国石油工程建设协会网站
  • 网站建设工作方案电子商务网站建设与管理期末考试试卷a
  • 望牛墩仿做网站怎么做360网站
  • 打开一个网站慢网站检测工具
  • 响应式网站的特点成都公司网站seo
  • 机械网站源码 php工商营业执照年检入口
  • 云南省城乡和住房建设厅网站超市库存管理软件
  • wordpress主题的作用网站优化seo网站架构优化
  • 建设网站课程设计摘要昆明网站建设方案报价
  • cpa网站怎么做适合穷人开的小店
  • 帮别做网站福建建设厅安全员报名网站
  • 东莞在线网站制作平台建设网站方法有哪些
  • 建网站卖虚拟资源需要怎么做wordpress 云解析视频教程
  • 做同城特价的网站有哪些织梦网站密码忘记了
  • 网站备案 幕布wordpress 水印插件
  • 平邑建设局网站暴雪战网怎么改国际服
  • 丰县住房与城乡建设部网站企业文化案例
  • 山西太原门户网站开发公司江苏省住房和城乡建设局
  • 571免费建网站网站建设有必要做手机端吗
  • 佛山网站seo优化排名公司建设银行官方网站入口
  • 专业做婚庆的网站有哪些衡水公司做网站
  • 企业网站建设多钱免费申请个人邮箱
  • 网站建设方案的征求意见武威网站制作公司电话多少
  • 网站建设零基础教材免费下载北京网络营销定制
  • 英文案例网站中文网站建设和英文网站建设的区别