分解为预先声明的变量数组的类型注释是否存在一些语法



在我的标准中,所有类型注释(如果可能(都是必需的,因此TypeScrit-ESLint告诉我注释[ responseData, cognitoUser ]。但是,语法[ responseData1: ResponseData1, responseData2: ResponseData2]是无效的(TS1005: ';' expected(。如果没有这样的语法,那就是TypeScript/ESLint存储库中的问题。

let responseData1: ResponseData1;
let responseData2: ResponseData2;
try {
[ responseData1, responseData2] = await Promise.all([ /* ... */ ])
} catch {
// ...
}

从TS4可以为数组类型添加标签。

type ResponseData = [responseData1: ResponseData1, responseData2: ResponseData2];

你可以把它用于你的承诺。all:

try {
const [responseData1, responseData2]: ResponseData = await Promise.all([ /* ... */ ])
} catch {
// ...
}

以下是从Promise.all进行销毁并捕获错误所需遵循的总体模式:

function getFoo(): Promise<number> {
return Promise.resolve(2);
}
function getBar(): Promise<number> {
return Promise.resolve(3);
}
async function getResults(): Promise<{ foo: number; bar: number }> {
try {
const [foo, bar] = await Promise.all([getFoo(), getBar()]);
return { foo, bar };
} catch (e) {
throw new Error("something went wrong.");
}
}

相关内容

最新更新