Return 异步函数的类型

Return type for asynchronous function

我有这段代码,它是 async/await 在执行 ajax 调用时的简单实现

export const getExternalResource = async (): Promise|String|null => {
    return new Promise(async (resolve, reject) =>{
        const response = await fetch(url);
        const json = response.json();

        if(json) {
            resolve(json);
        } else {
            resolve(null)
        }
    });
};

/**
 * @var resource will be null|string
 */
const resource = await getExternalResource();

我的问题是 getExternalResource() 函数的正确 return 类型是什么?

在代码中它 return 是一个承诺,但是当使用 await 关键字调用函数时,它 return 是一个基本数据类型(字符串|空)。

您不需要 Promise 中的 fetch,因为 fetch return 是一个承诺。另外 return 类型的异步函数或方法必须是全局 Promise 类型。所以把这里的return改成了Promise<any>。您可以将 any 替换为匹配类型

export const getExternalResource = async(url: string): Promise<any> => {
  return await fetch(url).then(response => response.json());
};
const resource = getExternalResource('url').then(d=>d);