TypeScript:如何从类型中提取泛型参数?

2024-03-19

假设我有这样的类型React.ComponentClass<Props>我想参考Props部分,但在我当前的上下文中它是未命名的。

为了显示:

const x = makeComponent(); // typeof x = React.ComponentClass<Something>

在这种情况下,我可以使用typeof x但这并没有直接给我 访问Something type.

我想要的是这样的:

type GetPropsType<C extends React.ComponentClass<P>> = P

这样我就可以提取Something与类型GetPropsType<typeof x>

任何同等的东西都会很棒。


您可以使用推断:

type TypeWithGeneric<T> = T[]
type extractGeneric<Type> = Type extends TypeWithGeneric<infer X> ? X : never

type extracted = extractGeneric<TypeWithGeneric<number>>
// extracted === number

操场 http://www.typescriptlang.org/play/#src=type%20TypeWithGeneric%3CT%3E%20%3D%20T%5B%5D%0D%0Atype%20extractGeneric%3CType%3E%20%3D%20Type%20extends%20Array%3Cinfer%20X%3E%20%3F%20X%20%3A%20null%0D%0A%20%20%20%20%0D%0Atype%20extracted%20%3D%20extractGeneric%3CTypeWithGeneric%3Cnumber%3E%3E%0D%0A%2F%2F%20extracted%20%3D%3D%3D%20number%0D%0A%0D%0A%0D%0A

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TypeScript:如何从类型中提取泛型参数? 的相关文章

随机推荐

  • EF 6,代码第一个联结表名称

    我正在 EF 6 中尝试自定义命名约定 我有 2 个表和 1 个联结表 WebUser UserRequest WebUser UserRequest 我编写了应该能够重命名表的函数 从 WebUser 到 web user private
  • 无法在 Felix config.properties 中将 PAX-URL 的程序集协议与自动启动的捆绑包一起使用

    我正在尝试使用 PAX URL 这样我就可以即时组装未打包的捆绑包 如果我将 pax url assembly 1 2 1 jar 放入自动启动包中 然后键入 安装程序集 路径 到 我的 文件夹 一切正常 问题是 我想使用 gt felix
  • 如何在闪亮中创建登录页面?

    目标是拥有一个闪亮的模块ui1 R加载第二个模块ui2 R当按钮confirm被点击 我认为问题是is null input confirm 总是无效的 我需要的是仅使表达式无效一次confirm被点击 这个问题非常接近输入密码后启动Shi
  • 为什么我的温莎城堡控制器工厂的 GetControllerInstance() 被调用为空值?

    我正在使用温莎城堡来管理控制器实例 除其他外 我的控制器工厂如下所示 public class WindsorControllerFactory DefaultControllerFactory private WindsorContain
  • 在 iPhone 重启时启动 iOS BLE Central 应用程序

    我计划使用 CoreBluetooth 框架开发一个 iOS 应用程序 该应用程序可以连续监控计步器外围设备并计算脚步数 我知道 如果后台执行模式设置为 BLE Central 应用程序即使在后台也将继续接收 BLE 事件 Apple 文档
  • SQL存储过程检查表中的值是/否并执行sql

    检查table1中value是否 Y 然后立即执行sql select if select value1 from table1 where value desc Indicator and value1 Y then execute im
  • Elasticsearch 连接超时

    from datetime import datetime from elasticsearch import Elasticsearch es Elasticsearch doc author kimchy text Elasticsea
  • 如何从 TinyDB 数据库中检索单个值?

    我正在学习如何在 Python 上使用 TinyDB 并且我已经掌握了基础知识 添加 删除 更新等 但现在我正在尝试从数据库中检索特定值 我正在使用的代码在这个方法中 def showpassword show userdb get whe
  • 在 Go 中模拟 HTTPS 响应

    我正在尝试为向 Web 服务发出请求的包编写测试 我遇到问题可能是由于我对 TLS 缺乏了解 目前我的测试看起来像这样 func TestSimple server httptest NewServer http HandlerFunc f
  • 原则 2 中的动态表/实体名称

    我希望有人能够阐明我的代码发生了什么 我需要一个实体来表示通用表 作为具有 X id 后缀的表的模型 例如 我有一个实体 CustomerX 我需要查询的表是 cusotmer 1 customer 2 customer 3 等 我目前正在
  • select unique * 查询有多贵

    在sql server 2012中 我有一个包含超过2500万行且有重复项的表 该表没有唯一索引 它只有一个非聚集索引 我想消除重复项 所以我想到了以下内容 select distinct into temp table from prim
  • Angular CLI 在 ng 服务上偶尔会冻结计算机

    我有问题ng serve 当我在我的 Angular 项目上运行它时 大约 10 的时间 它会在此过程中冻结 并且整个计算机也会冻结 有时它会在一段时间 从20秒到120秒 后解冻并成功编译 有时我需要手动关闭计算机电源 我已经在 2 台计
  • 在 CSS 中应该使用 rgba(0, 0, 0, 0) 还是 rgba(255, 255, 255, 0) 来实现透明度?

    你应该使用rgba 0 0 0 0 or rgba 255 255 255 0 CSS 的透明度 各自的优点和缺点是什么 最后一个参数为rgba 函数是 alpha 或 opacity 参数 如果您将其设置为0它将意味着 完全透明 前三个参
  • 将datagridview导出到word文档c#

    我正在尝试将数据网格导出到Word文档 但不是这个结果 EmployeeID EmployeeName Birth Phone Address DateOfHiring Salary EmloyeeType 1 name 1 11 test
  • Mandrill 通过 Laravel / PHP 入站电子邮件

    我想知道是否有人可以帮助我解决我在研究 Laravel 和通过 Mandrill 入站电子邮件处理相关问题时遇到的一些问题 基本上我希望能够通过 Mandrill 接收电子邮件并将它们存储在我的 Laravel 数据库中 现在我不确定我是否
  • 将闪亮的小部件显示与特定的导航栏 tabPanel() 选择连接起来

    我有一个闪亮的仪表板 其中有一个导航栏页面 其中包含两个 tabPanel Summary and Available Funds Then Available Funds 由一个tabsetPanel 有两个选项卡面板 Plot and
  • Android蓝牙UUID连接APP到ANDROID

    我正在构建一个 Android 应用程序 用于跟踪设备上的蓝牙连接 并在超出范围时触发警报 Android 文档要求提供 UUID 才能建立连接 uuid 是用于唯一标识信息的字符串 ID 的通用唯一标识符 UUID 标准化 128 位格式
  • 如何在多个显示器上正确使用 SetDisplayConfig?

    我正在创建一个小程序 它将包含桌面中的所有显示器 扩展模式 或禁用所有辅助显示器 显示器可以连接到 GPU 和集成显卡 该程序适用于Windows 7 因此根据互联网上的信息 我决定使用CCD API 但遇到了SetDisplayConfi
  • 带有空 RHS 的“dcast”[重复]

    这个问题在这里已经有答案了 有没有办法在不首先指定要翻转的变量的情况下翻转我的数据 在我看来 逻辑默认值似乎是组内索引 例如 DT lt data table id rep 6 10 each 3 var rnorm 15 DT id va
  • TypeScript:如何从类型中提取泛型参数?

    假设我有这样的类型React ComponentClass