似乎在JavaScript中可以做到:
function extendPromise(promise) {
return promise.then(new Promise(() => {}));
}
Run Code Online (Sandbox Code Playgroud)
但是如果我添加类型,比如
function extendTypeScriptPromise(promise: Promise<void>) {
return promise.then(new Promise<void>(() => {}));
}
Run Code Online (Sandbox Code Playgroud)
然后TypeScript编译器说:
error TS2345: Argument of type 'Promise<void>' is not assignable to parameter of type '((value: void) => void | PromiseLike<void>) | null | undefined'.
Type 'Promise<void>' is not assignable to type '(value: void) => void | PromiseLike<void>'.
Type 'Promise<void>' provides no match for the signature '(value: void): void | PromiseLike<void>'.
Run Code Online (Sandbox Code Playgroud)
为什么不Promise<void>考虑PromiseLike?
axi*_*iac 11
你的JavaScript代码不太像它应该是什么样子.的参数Promise.then()必须是一个函数,而不是一个Promise.
此功能可以返回一个新的Promise,void或值(即不是Promise),用于解决Promise其.then()方法被调用.显然,在你的代码中它必须返回一个新的Promise.
正确的JavaScript代码是:
function extendPromise(promise) {
return promise.then(() => new Promise(() => {}));
}
Run Code Online (Sandbox Code Playgroud)
和相应的TypeScript代码是:
function extendTypeScriptPromise(promise: Promise<void>) {
return promise.then(() => new Promise<void>(() => {}));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
418 次 |
| 最近记录: |