

以下のコードで、関数の戻り値が `Promise<Foo>` なので `await` した `foo` の型は `Foo` になると思ったのですが
`any` になってエラーが出ます。なぜですか。

コード

[code]

    type Foo = {
      bar: string | undefined;
    };
    
    const getFooPromise = async (prevBar?: string | undefined): Promise<Foo> => {
      const responce = await fetch("https://example.com/foo?bar=" + prevBar);
      return responce.json();
    };
    
    const getBarPromise = async (): Promise<string | undefined> => {
      let bar: string | undefined = undefined;
    
      do {
        const foo = await getFooPromise(bar); // ←ここ
        bar = foo.bar;
      } while (bar);
    
      return bar;
    };
    
[/code]

エラー

[code]

    error TS7022: 'foo' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
    
[/code]


CC BY-SA 4.0
2022-06-01T08:20:22.553
89177
2022-06-01T08:37:09.140
2022-06-01T08:37:09.140
52809
52809
question
typescript
関数の戻り値を受けた変数が型推論されない