【发布时间】:2018-10-29 05:25:36
【问题描述】:
我通过 npm 更新了我的 typescript 包,现在我收到了错误:
“TS2345:'(response: string) => void' 类型的参数不可分配给'((value: {}) => void | PromiseLike) | null | undefined' 类型的参数”
尝试编译以下代码时:
private _send<T>(urlPath: string, params?: RequestParams): Promise<T> {
return this._requester.sendRequest<T>(this._datafeedURL, urlPath, params);
}
public getServerTime(callback: ServerTimeCallback): void {
this._send('time')
.then((response: string) => {
const time = parseInt(response);
if (!isNaN(time)) {
callback(time);
}
})
.catch((error?: string | Error) => {
logMessage(`Failed to load server time, error=${getErrorMessage(error)}`);
});
}
错误来自 .then 行
我已经阅读了其他类似的问题,但我无法理解我的案例中的问题。
【问题讨论】:
-
你能告诉我们
_send方法体吗?或者至少它的返回类型是什么? -
谢谢,但现在我们需要更深入。 Typescript 无法推断
T的类型,因此它得到了{}的默认类型(这太宽泛了,导致您看到的问题)。要了解为什么该推断不起作用,我们需要知道this._requester.sendRequest的签名。this._requester的类型是什么,如果可能的话,你能发布它的sendRequest方法的代码吗?或者如果它来自图书馆,你能告诉我们是哪一个吗? -
看来你应该说
this._send<string>('time')。
标签: typescript