gpt4 book ai didi

async-await - Flow 确实在 async/await 之后继续将变量解释为 Promises

转载 作者:行者123 更新时间:2023-12-04 22:55:08 24 4
gpt4 key购买 nike

转载:

// @flow
type A = { key: string, value: string};

const a:A = {
key: 'a',
value: 'a'
};

const foo = ():Promise<A> => {
return new Promise(function(resolve, reject){
setTimeout(function(){
resolve(a);
}, 1000);
});
}

const bar = async ():A => {
const res:A = ((await foo()):any);
return res;
}

bar();

Try it on flow.org/try

上下文:

当调用一个名为 'foo' 的函数用 await 返回一个 promise 时,变量的类型仍然是 Promise。

如果我们只返回变量,Flow 会正确解释该值,但如果我们键入名为“bar”的函数的返回值,则会触发错误。
19:         return res;
^ Cannot return `res` because property `key` is missing in `Promise` [1] but exists in `A` [2].
References:
[LIB] static/v0.75.0/flowlib/core.js:583: declare class Promise<+R> {
^ [1]
17: const bar = async ():A => {
^ [2]

尝试的解决方案:
  • 强制类型为调用 await
  • 的变量的“A”
  • 使用任何然后 'A' 进行类型转换似乎没有解决错误。

  • 相关问题:

    https://github.com/facebook/flow/issues/5294

    这个问题的目的:

    我主要是在寻找解决方法

    最佳答案

    这似乎是一个简单的误解,但 Flow 的错误信息并不是很有用。

    您已声明 bar作为

    const bar = async (): A => {

    但异步函数总是返回 promise ,所以它应该是
    const bar = async (): Promise<A> => {

    你可以看到 here on flow.org/try .

    关于async-await - Flow 确实在 async/await 之后继续将变量解释为 Promises,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51214283/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com