提问人:MKF 提问时间:9/30/2023 最后编辑:MKF 更新时间:9/30/2023 访问量:40
在异步函数中,您在哪里使用 typescript Awaited<T>?
Where do you use typescript Awaited<T> in async functions?
问:
我正在调用一个异步函数,该函数调用另一个返回 Promise 的函数。
我希望我的最后一个变量是类型。相反,我返回了类型。我读到可以解开它,但我对如何使用它感到困惑。我在什么功能中使用它?返回原始 promise 的函数,还是使用 async/await 语法的函数?完全在别的地方?csvRows
csvRow[]
Promise<csvRow[]>
Awaited<T>
我希望变量的定义类型:csvRows
export type csvRow = { [level: string]: string }
导致问题的代码:
const parseFile = (file) => {
return new Promise<csvRow[]>((resolve, reject) => {
Papa.parse(file, {
header: true,
delimter: ',',
download: true,
skipEmptyLines: true,
complete: (a: csvType) => {
resolve(a.data)
},
error(err) {
reject(err)
}
})
})
}
export const useTimeSeriesData = async (): Promise<csvRow[]> => {
let csvRows = await parseFile('/path/to/file')
return csvRows
}
const csvRows = useTimeSeriesData()
在上面的代码中,有一行 in using ,定义如下:parseFile
csvType
export type csvType = {
data: csvRow[]
}
我尝试过使用各种功能,但没有运气。这是我稍后尝试在代码中使用变量时遇到的错误:Awaited
csvRows
“Promise<csvRow[]>”类型的参数不能分配给“csvRow[]”类型的参数。 类型“Promise<csvRow[]>”缺少类型“csvRow[]”中的以下属性:length、pop、push、concat 和 29 more.ts(2345)
答:
0赞
Jax-p
9/30/2023
#1
您可能正在尝试调用,因为它是异步的。您可以:await
const csvRows: csvRow[] = await useTimeSeriesData();
要回答您关于如何使用 type 的原始问题...当从函数创建类型时,它会很有帮助。例如:Awaited
type CsvRowsReturnType = ReturnType<typeof useTimeSeriesData>; // Promise<csvRow[]>
type CsvRowsType = Awaited<CsvRowsReturnType>; // csvRow[]
评论
Promise
await
then
Awaited<T>