简体   繁体   English

如何返回类型 Promise<void> 或 Promise<any> ?</any></void>

[英]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>

编辑 TypeScript(分叉)

I think you want Promise<undefined|any>我想你想要 Promise<undefined|any>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 角型,“承诺” <void | Task> &#39; - Angular, Type 'Promise<void | Task>' 角度承诺 <void> &#39;不可分配给类型 - Angular Promise<void>' is not assignable to type RxDB Angular2-cli&#39;承诺 <void> &#39;不能赋值给&#39;Promise&#39;类型的参数 <any> “ - RxDB Angular2-cli 'Promise<void>' is not assignable to parameter of type 'Promise<any>' 在Promise中返回自定义类型 - Return custom type in Promise 如何在Angular 2中以Promise类型返回数据? - How to return data as Promise type in Angular 2? 在拦截器上获取令牌时出错-输入&#39;Promise <void | Observable<HttpEvent<any> &gt;&gt;&#39;不可分配给&#39;Observable&#39;类型 <HttpEvent<any> &gt;&#39; - Error getting token on interceptor - Type 'Promise<void | Observable<HttpEvent<any>>>' is not assignable to type 'Observable<HttpEvent<any>>' 输入“承诺” <boolean | void> &#39;不可分配给&#39;boolean&#39;类型 - Type 'Promise<boolean | void>' is not assignable to type 'boolean' 然后保证Angular 7-类型&#39;void&#39;不存在&#39;then&#39; - then promise Angular 7 - 'then' does not exist on type 'void' 类型诺言中不存在属性映射<void> - property map does not exist on type promise<void> 类型 &#39;Promise&#39; 上不存在属性 &#39;finally&#39;<void> &#39; - Property 'finally' does not exist on type 'Promise<void>'
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM