【问题标题】:How to type async function in TypeScript when its a void function如何在 TypeScript 中键入 void 函数时的异步函数
【发布时间】:2021-02-10 22:26:09
【问题描述】:

这是我的代码:

async buildSomething(): any {
    const requestData = await request;
    requestData.forEach(i => this.table.push(i));
}

我应该如何键入一个 void 函数,因为它做了一些事情但它不返回任何内容。

在我的例子中,我使用了 any,但 tslint 向我展示了这一点:

类型 'any' 在 ES5/ES3 中不是有效的异步函数返回类型,因为它不引用与 Promise 兼容的构造函数值。

我应该如何做到这一点?

【问题讨论】:

  • 这不清楚吗?为什么人们把-1?伙计,我只是需要一些建议,仅此而已
  • 你试过输入void吗?
  • 是的,同样的 tslint 消息

标签: javascript typescript asynchronous async-await


【解决方案1】:

所有异步函数都会返回一些东西:它们返回 Promise。所以你不想要void,你想要Promise<void>

async buildSomething(): Promise<void> {
    const requestData = await request;
    requestData.forEach(i => this.table.push(i));
}

【讨论】:

  • 是的,你说得对,和上面一样,我可以在哪里学习泛型?每一页都有复杂的解释,我很难理解它们
  • 基本情况是它是 [another thing] 的 [thing]。例如,“Array”是一个“字符串数组”。泛型让您描述类型的一般工作方式(即,它们让您描述“字符串数组”中的“of”的含义),然后在使用它时,可以更具体。在 Promise 的情况下,您需要更具体地说明 Promise 将要解决的问题。 Promise&lt;string&gt; 是一个解析为字符串的承诺; Promise&lt;void&gt; 是一个可以解析为void的承诺
【解决方案2】:

返回类型应该是Promise&lt;void&gt;

【讨论】:

    猜你喜欢
    • 2018-10-23
    • 1970-01-01
    • 2022-11-04
    • 1970-01-01
    • 2022-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    相关资源
    最近更新 更多