gpt4 book ai didi

typescript - TypeScript 是否可以实现功能性 promise 链接?

转载 作者:搜寻专家 更新时间:2023-10-30 22:03:57 28 4
gpt4 key购买 nike

似乎在 JavaScript 中可以做到:

function extendPromise(promise) {
return promise.then(new Promise(() => {}));
}

但是如果我添加类型,比如

function extendTypeScriptPromise(promise: Promise<void>) {
return promise.then(new Promise<void>(() => {}));
}

然后 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>'.

为什么不是 Promise<void>考虑PromiseLike

最佳答案

您的 JavaScript 代码不尽如人意。 Promise.then() 的参数必须是函数,而不是 Promise .

这个函数可以返回一个新的Promise , void或用于解析 Promise 的值(不是 Promise )谁的.then()方法被调用。显然,在您的代码中,它必须返回一个新的 Promise .

正确的 JavaScript 代码是:

function extendPromise(promise) {
return promise.then(() => new Promise(() => {}));
}

对应的TypeScript代码为:

function extendTypeScriptPromise(promise: Promise<void>) {
return promise.then(() => new Promise<void>(() => {}));
}

关于typescript - TypeScript 是否可以实现功能性 promise 链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51813552/

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