[英]How to return type Promise<void> or Promise<any>?
在 TypeScript 中,如何返回Promise<void>
或Promise<any>
類型的 promise
我試過了
Promise<void | any>
Promise<void> | Promise<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'?
我從 Angular 11 -> 12 升級時遇到了這個錯誤。這個 TypeScript 版本現在在沒有提供 Promise 類型時會拋出這個錯誤。
請參閱下面的示例類型錯誤...
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));
問題是當我創建一個新的 promise 時,它默認需要一個類型。 void (nothing) 不是類型。
new <T>(executor: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void): Promise<T>;
一個簡單的解決方法是在創建 promise 時指定類型。
new Promise<void>
但是如果我決定使用,我仍然會收到錯誤:
new Promise<void | any>
我想你想要 Promise<undefined|any>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.