gpt4 book ai didi

带有嵌套函数的 Typescript ReturnType

转载 作者:搜寻专家 更新时间:2023-10-30 20:54:42 26 4
gpt4 key购买 nike

我正在尝试使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com