我收到此错误消息,不知道该怎么办(如下面的 EDIT 所述,我正在使用TS version 3.9.0-dev.20200324
)。
错误(TS2345):类型“ awaited T”的参数不能分配给类型“ T”的参数。 可以使用与“等待的T”无关的任意类型实例化“ T”。
TypeScript代码:lib/functional/promise-or-not.ts
// ... [more code]
export async function thenified<T>(
promise: Promise<T>,
funct: <R>(t: T) => R,
): Promise<any> {
return promise.then(
t => funct(t)
);
}
输出:tsc Version 3.9.0-dev.20200324
% ❯ tsc # 3.9.0-dev.20200324
lib/functional/promise-or-not.ts:10:16 - error TS2345: Argument of type 'awaited T' is not assignable to parameter of type 'T'.
'T' could be instantiated with an arbitrary type which could be unrelated to 'awaited T'.
10 t => funct(t)
~
Found 1 error.
另请参见Microsoft / TypeScript /#37664中的this comment:
使用Promise.all在通用函数中错误的返回类型推断
由于使用其他TS版本时我的代码中存在其他问题,因此我无法使用Version 3.9.0-dev.20200324
。
这是在使用Version 4.0.0-dev.20200504
时未在此处显示其他代码部分的情况,问题在this GitHub issue中进行了详细说明。
答案 0 :(得分:2)
将t
投射到any
export async function thenified<T>(
promise: Promise<T>,
funct: <R>(t: T) => R,
): Promise<any> {
return promise.then(
t => funct(t as any)
);
}
糟糕的解决方法,但是您该怎么办。