获取函数的返回类型

2023-12-04

我有以下功能:

function test(): number {
    return 42;
}

我可以通过使用获取函数的类型typeof:

type t = typeof test;

Here, t() => number.

有没有办法获取函数的返回类型?我想t to be number代替() => number.


EDIT

从 TypeScript 2.8 开始,这正式可以通过ReturnType<T>.

type T10 = ReturnType<() => string>;  // string
type T11 = ReturnType<(s: string) => void>;  // void
type T12 = ReturnType<(<T>() => T)>;  // {}
type T13 = ReturnType<(<T extends U, U extends number[]>() => T)>;  // number[]

See 这个对 Microsoft/TypeScript 的拉取请求了解详情。

TypeScript 太棒了!


老派黑客

不幸的是,瑞安的答案不再有效。但我用一个 hack 修改了它,我对此感到非常高兴。看哪:

const fnReturnType = (false as true) && fn();

它通过铸造起作用false到字面值true,这样类型系统就认为返回值是函数的类型,但是当你实际运行代码时,它就短路了false.

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

获取函数的返回类型 的相关文章

随机推荐

  • 为什么此代码会导致数据争用?

    1 package main 2 3 import time 4 5 func main 6 m1 make map string int 7 m1 hello 1 8 m1 world 2 9 go func 10 for i 0 i l
  • 如何使用Java Scanner读取非英文字符?

    那里 我正在制作这个应用程序来更改字幕文件 当我测试它时 我遇到了一个奇怪的问题 当我在非英语 例如波斯语 上测试它时 程序不会读取文件 这就是我在程序中阅读字幕的方式 Scanner sub null try sub new Scanne
  • 用于转换 kbt-y102_9999_0001v-s001v => N1v-s1v 的正则表达式

    我正在寻找一个正则表达式来转换字符串 例如 kbt y102 9999 0001v s001v into N1v s1v kbt y102 gt ignore everything until first underscore 9999 g
  • 如何在 pandas groupby 中移动整个组

    给出以下数据 data a 1 1 1 8 8 3 3 3 3 4 4 df pd DataFrame data 我现在想将整个事情向下移动 ngroups 以便保留它们当前的顺序 n 1 的移位所需的输出为 desired output
  • 如何以xamarin形式获取意图活动结果

    我正在尝试使用依赖项服务来启动在我的 xamarin 表单应用程序中启用 BT 的意图 但我发现很难将结果返回到 xamarin 形式 是否有任何机制可以将活动结果通知返回到表单应用程序 在形式上 DependencyService Get
  • RSelenium rsDriver 对等 SSL 证书问题

    我正在尝试学习使用 RSelenium 我只是尝试使用 rsDriver 启动服务器 我只是尝试运行下面的代码并收到以下错误 rD lt rsDriver checking Selenium Server versions BEGIN PR
  • 如何在 Python 中解密 AWS Ruby 客户端加密

    AWS 的 S3 SDK for Ruby 允许对文件进行客户端 信封 加密 它是客户端密钥的 AES CBC ECB 加密组合 其中信封密钥和初始化向量存储在元数据中 我有一位 Ruby 开发人员 他对 S3 存储桶中的各种文件进行了加密
  • 检查给定路径的文件或文件夹是否存在

    我让用户将路径作为字符串传递 A path可能是这样的 C someFolder C someFolder someFile C someFolder someFile jpg 我想检查给定的路径是文件还是文件夹 如果是文件 我想检查它是否
  • python AccessInit:散列冲突:对于 1 和 1 都是 3 是什么意思?

    我有 4 个 python 文件 我从 PHP 运行第一个调用其他文件的 python 文件 但出现此错误 AccessInit hash collision 3 for both 1 and 1 这是什么意思 Here 谈论同一个模块以不
  • junit 条件拆卸

    我想在我的 junit 测试用例中进行有条件的拆卸 例如 Test testmethod1 condition to be tested Teardown teardown method here 在拆解中我想要一个像这样的条件 if pa
  • Python 上麦克风的 Wav 文件

    我的项目是使用麦克风进行说话人识别 我正在使用 speeh recognition 库来提取麦克风音频 但该对象的类是 speech recognition AudioData 我不知道如何将其转换为 wav 文件 例如为了使用 libro
  • 在 PHP 中比较两个 unicode 字符串

    我一直在比较 PHP 中的两个 unicode 字符串 它们都包含特殊字符 一根弦来自 GET 另一个是文件系统的文件夹名称 scandir 两根弦似乎都对我来说是相等的 使得 var dump filter var dump tail k
  • 错误:您的计算机在命令行中缺少 cygintl-2.dll

    我在 Windows 8 电脑上使用命令行 输入 ls 命令后 出现以下错误 ls exe 系统错误 该程序无法启动 因为您的计算机缺少 cygintl 2 dll 尝试重新安装该程序来解决此问题 实际上 我已经用谷歌搜索并观看了一些视频
  • CSS 中的 + 是什么意思? [复制]

    这个问题在这里已经有答案了 什么是 这个CSS规则是什么意思 h2 p font size 1 4em font weight bold color 777 is the 相邻兄弟组合器 这意味着选择器h2 p只选择p那来了之后立马 an
  • 如何使用正则表达式删除美元格式

    我试图从字符串 1 109 889 23 中删除美元格式 我尝试使用正则表达式 d 但后来我得到了逗号 有什么帮助吗 提前致谢 您不需要为此使用正则表达式 只需使用lsParseCurrency numericValue lsParseCu
  • 如何将 IMFSample 发送到 EVR 媒体接收器

    我想独立使用 EVR 但无法向其发送 IMFSample 下面列出了代码 create the video render IMFActivate pActive NULL hr MFCreateVideoRendererActivate m
  • 如何在shell中检查字符串是否包含正则表达式模式中的字符?

    如何检查变量是否包含字符 regex other than 0 9a z and 在纯bash中 我需要有条件检查 如果字符串包含除上述可接受的字符之外的字符exit 1 一种方法是使用grep命令 像这样 grep qv 0 9a z l
  • 用于双向关联的 @ManyToMany/@OneToMany 映射属性

    我正在为实习开发 JPA 合规性套件 该套件的一部分涉及测试极端情况的正确实现 ManyToMany有一个mappedBy属性 JPA 指出 字符串mappedBy 拥有关系的字段或属性 必需的 除非关系是单向的 未给出默认值 默认列为空
  • PHP $_GET 和 .htaccess 重写

    我知道这可能是一个常见问题 并且之前已被问过 但 htaccess 对我来说看起来很陌生 而且我似乎无法通过查看以前的问题来解决这个问题 我有一个用于搜索的索引脚本 语法是 listing field property type query
  • 获取函数的返回类型

    我有以下功能 function test number return 42 我可以通过使用获取函数的类型typeof type t typeof test Here t将 gt number 有没有办法获取函数的返回类型 我想t to be