【发布时间】:2021-01-30 03:54:00
【问题描述】:
假设我有以下定义对象的接口:
interface ExampleInterface {
a: string:
b: number;
c: AsyncFunction<boolean>
}
其中 AsyncFunction 定义为:
type AsyncFunction<T> = () => Promise<T>;
如果提供给 c: 的函数没有参数,这目前运行良好,但如果函数有任何参数,则会导致 TS2322 编译错误。
这个想法是 <T> 用于在函数的 Promise 中定义返回类型。该函数可能需要也可能不需要自己的参数,但它必须在 Promise 中提供指定的 T 返回类型。
我的问题是,有没有办法修改类型定义,以便在 c: 中使用具有零个或任意数量参数的任何函数?
我试图理解 infer,但我所有使用它的尝试(它可能不是我想要的)都以 c 结束:有(任何)回报类型不是我想要的。我也尝试过使用以下方法,但没有成功。
type AsyncFunction<T> = (...args: any[]) => Promise<T>;
提前致谢。
【问题讨论】:
-
您需要reproducible example 这个问题,我们才能为您提供帮助。如果可能,请尝试在 playground 中复制它。如果问题没有出现在 Playground 中,请给出最低限度以使用 tsc/vscode 重现它。
标签: typescript typescript-generics