我构建了一个可调用的firebase云函数generateReport
,它返回以下对象:
{
id: string,
fileName: string,
numOfRows: string,
createdOn: number
}
当我使用自定义的可重用apiCall
函数从React TypeScript代码中调用它时,TypeScript不知道函数返回什么,并且在我尝试访问返回变量时抛出错误。
调用云函数的React代码
function apiCall({ functionName, payload }) {
const request = httpsCallable(functions, functionName)
return request(payload)
}
const response = await apiCall({
functionName: AdminFunctions.GENERATE_REPORT, payload: {
organisationId: organisation.id,
projectId: project.id
}
})
const { id, fileName, numOfRows, createdOn } = response.data // Error occurs here
我收到的错误:
类型'{}'上不存在属性'id'/'filename'/'numOfRows'/'createdOn'。
我想继续使用通用的apiCall
函数。它实际上存在于一个单独的文件中,并用于我所有的API调用。
如何让TypeScript适应我尝试访问的响应变量?
1条答案
按热度按时间p8ekf7hl1#
您可以在调用apiCall函数时指定响应对象的类型。您可以通过为函数提供一个类型参数来完成此操作,如下所示:
这告诉TypeScript apiCall函数将返回一个具有指定结构的对象。然后,您可以访问返回对象的属性,而不会出现任何错误。