异步函数中的打字稿错误:'Promise<string[]' 无法提供签名'(rows: string[]): Promise<string[] | undefined>'



我有工作代码,但需要重构函数以使其可重用。我对打字稿和客户端不是很熟悉。查询和承诺,因此重构已被证明是棘手的。

什么在工作:

if (rows) {
const headerTranslation = async (headerRows: string[]) => {
const { data: translatedRows } = await client
.query<CompileRowsForProgramQuery>(HANDLEBARS_COMPILE_QUERY, {
originalTexts: headerRows,
programId,
})
.toPromise();
return translatedRows?.programCompiledTexts;
};
downloadJsonAsCsv(
rows,
`${programName}-program-${programId}-${surveyId}-responses.csv`,
headerTranslation
);
}

我正试图将函数拉出到utils文件中,如下所示:

export default async function HandlebarsCompileQuery(
client: Client,
headerRows: string[],
programId: string
) {
const { data: translatedRows } = await client
.query<CompileRowsForProgramQuery>(HANDLEBARS_COMPILE_QUERY, {
originalTexts: headerRows,
programId,
})
.toPromise();
return translatedRows?.programCompiledTexts;
}

然后这样命名:

if (rows) {
const headerTranslation = await HandlebarsCompileQuery(client, rows, programId);
downloadJsonAsCsv(
rows,
`${programName}-program-${programId}-${surveyId}-responses.csv`,
headerTranslation
);
}

但我遇到了一个打字错误下划线headerTranslation:Argument of type 'Promise<string[] | undefined>' is not assignable to parameter of type '(rows: string[]) => Promise<string[] | undefined>'.Type 'Promise<string[] | undefined>' provides no match for the signature '(rows: string[]): Promise<string[] | undefined>'.

downloadJsonAsCsv的类型有:

export default async function downloadJsonAsCsv<T extends Record<string, unknown>>(
rows: T[],
fileName: string,
headerTranslation?: (rows: string[]) => Promise<string[] | undefined>
)

任何指导或资源将不胜感激。

我需要在函数内部返回一个函数:)

export default function HandlebarsCompileQuery(
client: Client,
programId: string
) {
return async function (rows: string[]) {
const { data: translatedRows } = await client
.query<CompileRowsForProgramQuery>(HANDLEBARS_COMPILE_QUERY, {
originalTexts: rows,
programId,
})
.toPromise();
return translatedRows?.programCompiledTexts;
};
}

我还去掉了headerRows

的需要

相关内容

最新更新