- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用 ReturnType
生成一个类型,该类型取决于对象上函数的返回类型。
这是对象:
const foo = {
bar: (): number => 1,
quux: (): string => 'a',
};
所需的结果类型是:
type FooLeaves = {
bar: number;
quux: string;
};
是否可以将 ResultType
应用于对象的值,以便从嵌套函数中提取返回类型?
我想我可以调用每个值并采用它的类型,但它看起来很老套
最佳答案
使用 mapped types 非常简单:
type FooLeaves = { [K in keyof typeof foo]: ReturnType<typeof foo[K]> };
这相当于
type FooLeaves = {
bar: number;
quux: string;
};
如果您想要更通用的解决方案,您可以使用 conditional types创建这样的东西:
type ResultsOf<T> = { [K in keyof T]: T[K] extends (...args: any) => infer R ? R : T[K] }
这也将处理混合函数和常规值的情况,例如:
const foo = {
bar: (): number => 1,
quux: 'a',
};
type FooLeaves = ResultsOf<typeof foo>; // { bar: number, quux: string }
关于带有嵌套函数的 Typescript ReturnType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56533847/
考虑这些免费的独立功能: std::vector& f(); //reference std::vector g(); //value /*const
在泛型api中,为什么有时类型参数写在返回类型之前,有时则不需要? 以下两个 Steam API 为例 Stream limit(long maxSize) 和 Stream map(Fun
有什么区别吗 @ResponseBody public Object method(etc..) { etc.. } 和 public @ResponseBody Object method(
TypeScript 2.8 中的新ReturnType是一项非常有用的功能,可让您提取特定函数的返回类型。 function foo(e: number): number { return
我正在使用 twilio-node pkg 并且有 fetch function : lookupResponse = await twilioClient.lookups.v1.phoneNumbe
为了提供一些背景知识,我正在创建一个小型依赖项注入(inject)器,但在将方法调用转换回它们的返回类型时遇到了问题。一个最小的例子是: public class MinimalExample {
我正在尝试使用 ReturnType 生成一个类型,该类型取决于对象上函数的返回类型。 这是对象: const foo = { bar: (): number => 1, quux: ():
我的初始代码如下,它允许我在执行 switch on action:ActionType 时根据 type 检测 data 的类型。 enum Actions { GET_MESSAGES,
我正在尝试输入以下函数: function foo(input, modifier, merge) { return merge(...modifier.map(m => m(input)))
我不明白为什么在下面的情况下Temp类型是never。我明白为什么它与 (...args: any) => infer R 兼容,但如何从中推断出类型 never ? // type ReturnTy
我不明白为什么在下面的情况下Temp类型是never。我明白为什么它与 (...args: any) => infer R 兼容,但如何从中推断出类型 never ? // type ReturnTy
我正在尝试使用 typescript 2.8 的新 conditional types ,(尚未发布版本 2.8.0-dev.20180307),我不知道这是错误还是误用。我的重点是我的声明 Mock
我正在尝试扩展 redux connect,以便它可以与特定的 reducer/state 一起用作装饰器,这可能不是必需的,因为 redux connect 可以用作装饰器,但我很好奇为什么我不能它
typescript 中有一个功能叫做 ReturnType这允许您推断特定函数的返回类型,就像这样 function arrayOf(item: string): string[] { retu
我已经开始研究 Typewriter,看看它是否符合我生成模型和 API 层的要求。 到目前为止,它正在生成模型,我让它生成某种 API 层,但是在使用 $ReturnType 时我遇到了问题,如示例
我在 Hibernate 中有一个映射类,它包含一个命名的 sql 查询,该查询计算某些搜索参数的整数的最小值。实际的查询非常复杂(所以我既不能将其写为标准,也不能在我的 Hibernate 版本中将
我在 Xcode 10.2.1 中使用 Swift 5 我在 UInt8 的扩展中有这个功能 编译器在第 5 行报错,unexpected non-void return value in void
我有一个对象的实例,我会扫描其上附有适当注释的 memberProperties。然后,我想根据它们的返回类型进行过滤。 例如,如果声明如下:class AutoValidatedThing : Au
GLfloat test = glm::dot(glm::vec3(1.0f,1.0f,1.0f),glm::vec3(1.0f,1.0f,1.0f)); 这可以编译并正常工作,但 Clion-IDE
我见过几个这种形式的语法示例(我在快速搜索柯里化(Currying)时看到了这个) func funcName(a: TypeOfA)(b: TypeOfB) -> returnType { r
我是一名优秀的程序员,十分优秀!