【问题标题】:TS1057: An async function or method must have a valid awaitable return typeTS1057:异步函数或方法必须具有有效的可等待返回类型
【发布时间】:2017-02-18 00:05:24
【问题描述】:

3 月 28 日,Github 上发布了一个问题,该问题涉及异步箭头函数在针对 ES5 时会生成损坏的代码,最终产生以下错误消息:

TS1057:异步函数或方法必须具有有效的可等待返回 输入

这是 Github 上的原始问题:https://github.com/Microsoft/TypeScript/issues/7706

7 月 21 日微软承诺在针对 ES5 时支持async awaithttp://react-etc.net/entry/async-await-support-for-es5-browsers-pushed-to-typescript-2-1

TypeScript 2.1 现已在 Github 上提供。我已经下载了,你可以在它的 package.json 中看到版本:

    "name": "typescript",
    "author": "Microsoft Corp.",
    "homepage": "http://typescriptlang.org/",
    "version": "2.1.0",
    "license": "Apache-2.0",

但是,当我尝试使用异步箭头函数(我确实有 TypeScript 2.1)时,我仍然遇到同样的错误:

TS1057:异步函数或方法必须具有有效的可等待返回 输入

今天有人刚刚在 Github 上提出了一个关于这个问题的问题:https://github.com/Microsoft/TypeScript/issues/10805

他被回答说这是重复的,并且是从三月份开始的旧问题,早在TypeScript 2.1开发之前,问题已经关闭。

这里是否有人已经在使用异步箭头函数(并针对 ES5)或者知道它的当前状态是什么?

这是我的代码 sn-p:

async (param1) => {
        var var1 = await func1();
    }

任何帮助将不胜感激!

【问题讨论】:

  • 把这个贴在 TS 列表上,而不是在这里。
  • 这是我的问题的正确位置,因为也许我做错了什么
  • 如果省略forEach,只创建lambda函数,错误是否仍然存在? var f = async (param1) => { ... };
  • 我很困惑。您的帖子将错误消息说为“TS1057:异步函数或方法必须具有有效的可等待返回类型*,但是在对新删除答案的评论中,您现在说这是其他一些错误消息?
  • @Eric func1 尚未编写,但我认为这不是问题,因为我可以删除此语句并将函数体保留为空,就像您的示例一样,我仍然会得到相同的结果错误。编译器将关键字“async”标记为红线,并将其悬停会弹出我提到的错误。

标签: javascript github typescript async-await


【解决方案1】:

我已经解决了!

问题出在我的代码中。

由于我使用 TypeScript,我必须指定返回类型:

async (param1): Promise<void> => {
        var var1 = await func1();
    }

现在 TypeScipt 编译器不再抱怨了。

【讨论】:

    猜你喜欢
    • 2019-01-24
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2015-05-16
    • 2018-04-21
    • 1970-01-01
    相关资源
    最近更新 更多