Typescript 中是否有类似 ReturnType 的 ArgumentsType

2024-03-19

ReturnType<T>提取函数的返回类型。

有没有办法定义ArgumentsType<T>提取函数的参数类型tuple format?

例如,

ArgumentsType<(a: number, b: string) => boolean>[number, string].


打字稿 3.1

自从写了原始答案以来,打字稿现在有一个内置类型(定义在lib.d.ts) 获取调用的参数的类型Parameters https://www.typescriptlang.org/docs/handbook/utility-types.html#parameterstype.

type argsEmpty = Parameters<() => void> 
// []

type args = Parameters<(x: number, y: string, z: boolean) => void> 
// [number, string, boolean]

type argsOpt = Parameters<(x: number, y?: string, z?: boolean) => void> 
// [number, (string | undefined)?, (boolean | undefined)?]

原答案

EditTypescript 3.0 已发布,以下代码按预期工作。

虽然在当前版本的 typescript (2.9) 中如果不拼写出所有参数,这是不可能的。这将在未来几天发布的下一个版本的 typescript (3.0) 中成为可能:

type ArgumentsType<T> = T extends (...args: infer U) => any ? U: never;

type argsEmpty = ArgumentsType<() => void> 
// []

type args = ArgumentsType<(x: number, y: string, z: boolean) => void>
// [number, string, boolean]

type argsOpt = ArgumentsType<(x: number, y?: string, z?: boolean) => void> 
// [number, (string | undefined)?, (boolean | undefined)?]

如果你安装npm install typescript@next你已经可以玩这个了,它应该在本月的某个时候上市。

Note

我们还可以使用这个新功能将元组分散到参数中:

type Spread<T extends any[]> = (...args: T) => void;

type Func = Spread<args> 
// (x: number, y: string, z: boolean) => void

您可以阅读有关此功能的更多信息here https://github.com/Microsoft/TypeScript/pull/24897

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

Typescript 中是否有类似 ReturnType 的 ArgumentsType ? 的相关文章

随机推荐

  • Scala:输入流到数组[字节]

    使用 Scala 从 InputStream 读取字节数组的最佳方法是什么 我可以看到您可以将 InputStream 转换为 char 数组 Source fromInputStream is toArray 怎么样 Stream con
  • 在 Clojure 中使用 WSDL

    我需要使用 WSDL Web 服务 而到目前为止我看到的 Java 客户端代码看起来臃肿且复杂 我想知道 Clojure 中是否存在更清晰的解决方案 以便我可以在 Clojure 中实现该部分并向 Java 代码公开更简单的 API cd
  • Firebase createCustomToken() 在本地模拟器中返回无效令牌

    我正在使用 firebase 身份验证来处理我的 Web 应用程序的用户帐户 当用户输入有效的登录凭据时 我使用 firebase admin SDK 在云函数中生成 JWT 该 JWT 被发送回客户端 然后使用 firebase 进行身份
  • matplotlib.rc 和 matplotlib.pyplot.rc 有什么区别?

    据我所知 在 matplotlib 中 您可以使用 rc 或 rcParams 来自定义绘图的样式 但是 这些函数似乎存在于两个级别 例如 matplotlib rc 与 matplotlib pyplot rc 或 matplotlib
  • 在 jQuery 中获取鼠标滚轮事件?

    有没有办法获取鼠标滚轮事件 不讲scroll事件 在 jQuery 中 document ready function foo bind mousewheel function e if e originalEvent wheelDelta
  • 如何使用QMake的子目录模板?

    我开始学习Qt 我即将离开 Visual Studio 世界 正在寻找一种使用 QMake 组织项目结构的方法 我找到了 子目录 模板 但我很难理解它 我的项目结构如下所示 project dir main cpp project pro
  • 如何将 Room 数据库导出为 .db 以下载文件以便稍后使用?

    如何将 Room 数据库导出到 db 文件以便稍后使用 我想将其导出到 Android 设备存储中的下载文件夹 我已经设置导出到 CSV 但现在我需要导出到 db 这样 如果用户正在切换设备并且需要其他设备上的数据 我可以重新导入它 有没有
  • 排毒笑话测试不是并行运行的

    使用 Jest 实现自动化排毒 您好 我正在使用以下命令从 CLI 运行排毒测试 detox test r maxWorkers 2 实现并行执行 已经有一个模拟器以名称 iphone 5s Detox 启动 并以 maxWorkers 2
  • 标签可以在 git filter-branch 和 rebase 之后自动移动吗?

    edit问题归结为 可以git rebase也被指示对标签进行变基吗 但是对最初问题的回答也会有所帮助 Asking 如何将过去添加到 git 存储库中 https stackoverflow com questions 3147097 h
  • Word 和 Python - 创建目录

    我正在使用 python 的 pywin32 client 扩展并构建 Word 文档 我尝试了很多很好的方法来生成目录 但都失败了 我认为我想要做的是调用 ActiveDocument 对象并使用 MSDN 页面中的以下示例创建一个对象
  • Yii ,从 $_FILES 保存图像,但不使用模型

    这可能吗 这是有模型的 CUploadedFile getInstance model newsimage model gt image gt saveAs image path 但我不想创建模型只是为了保存我的图像 我实际上需要这个的目的
  • 保存的位图是黑色的

    我创建了一个带有文本的位图 我可以在图像视图中查看它 但是当我保存位图时 我只得到一个黑色图像 我花了三个小时研究类似的问题 但没有一个对我有用 这是代码 谢谢你的帮助 public void createBitmap Bitmap Lab
  • 使用中间服务器创建点对点连接

    我想连接两个客户端 通过 TCP IP 套接字 客户端可以使用中间服务器发现彼此 一旦客户端发现彼此 服务器就不应该有任何参与 我对此做了一些研究 发现很多人建议JXTA 但我想自己从头开始创建协议 因为将来我可能也必须使用 WebSock
  • 如何通过存储在字符串变量中的名称获取 XAML 元素?

    例如 我有一个 UIElement
  • 使用电子邮件地址和应用程序密码从 oauth2/token 获取访问令牌

    我们对 Active Directory 下的电子邮件地址使用强制两因素身份验证 我有一个需要服务帐户的应用程序 因此我们为该服务帐户创建了应用程序密码 我们使用以下端点获取访问令牌 https login windows net tena
  • jquery setTimeout 或 setInterval

    我有以下带有 if 条件的代码 if oldMembership lt newMembership var digit ul indexSiteCounterBottom empty for i 0 i lt 9 i if membersh
  • 如何关闭 Invoke-WebRequest 打开的 IE 会话

    我在我的脚本中注意到Invoke WebRequest正在启动 Internet Explorer 大概是为了解析 DOM 有没有办法在脚本结束时关闭这些 IE 会话以进行清理 The line highlighted in red is
  • onDestroy 中 AsyncTask.execute 的含义

    我的代码中运行着这段代码onDestroy功能 Override protected void onDestroy if null theUser glideId JSONObject req new JSONObject try req
  • PHP 按类型对目录中的文件进行排序

    我编写了以下 PHP 代码来显示目录中的文件 它使用 JQuery 来展开文件夹 一切正常 但现在它按字母顺序混合文件类型显示所有文件 我想保留字母顺序 但单独显示文件夹和文件 如何对显示的文件进行排序 以便文件夹显示在顶部 其他文件显示在
  • Typescript 中是否有类似 ReturnType 的 ArgumentsType

    ReturnType