[英]How to return type Promise<void> or Promise<any>?
In TypeScript How can I return a promise of either type Promise<void>
or Promise<any>
在 TypeScript 中,如何返回Promise<void>
或Promise<any>
类型的 promise
I'ved tried我试过了
Promise<void | any>
Promise<void> | Promise<any>
The resulting error is for Promise<void | any>
产生的错误是针对Promise<void | any>
Promise<void | any>
: Promise<void | any>
:
error TS2794: Expected 1 arguments, but got 0. Did you forget to include 'void' in your type argument to 'Promise'?
I ran into this error when upgrading from Angular 11 -> 12. This TypeScript version now throws this error when Promise type isn't provided.我从 Angular 11 -> 12 升级时遇到了这个错误。这个 TypeScript 版本现在在没有提供 Promise 类型时会抛出这个错误。
See example type error in below...请参阅下面的示例类型错误...
type SpecialPromise = (number: number) => Promise<void>;
const returnsSomething: SpecialPromise = (number: number) => {
return new Promise((resolve) => setTimeout(() => resolve(number), 2000));
};
const returnsVoid: SpecialPromise = (number: number) => {
return new Promise((resolve) => setTimeout(() => resolve(), 2000));
};
Promise.all([
returnsSomething(Math.random()),
returnsVoid(Math.random())
]).then((numbers) => console.log(numbers));
The problem is when I create a new promise it by default expects a type.问题是当我创建一个新的 promise 时,它默认需要一个类型。 void (nothing) is not a type. void (nothing) 不是类型。
new <T>(executor: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void): Promise<T>;
A simple fix is to specify the type when creating the promise.一个简单的解决方法是在创建 promise 时指定类型。
new Promise<void>
But still I get the error if I decide to use:但是如果我决定使用,我仍然会收到错误:
new Promise<void | any>
I think you want Promise<undefined|any>我想你想要 Promise<undefined|any>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.