我在一個 Promise.all() 語句中發(fā)出 2 個 API 請求,后跟一個 .then() 語句來操作數(shù)據以適應預期的結果類型。當我使用 async/await 單獨啟動 API 請求但使用 Promise.all 時,該函數(shù)會起作用,導致返回的數(shù)組為 void 類型。如何更改響應以推斷正確的類型?這將返回正確的類型async function getUsers() { const users = await axios.get<User[]>("serverURL/users"); const data = await axios.get< Array<{ name: string; data: number }> >("serverURL/data"); const userData = users.data.map(user => { return { //logic to manipulate userData }; }); return userData;}Promise.all 版本返回類型 'void | 鍵入分配給.then()',它會獲取正確的數(shù)據,我可以 console.log 結果以確認它遵循預期的結構。然而編譯器拒絕它并出現(xiàn)錯誤:Type 'void | UserData[]' is not assignable to type 'UserData[]'.const getUsers = async () => { return Promise .all([ axios.get<User[]>("serverURL/users"), axios.get<Array<{ name: string; data: number }>>("serverURL/data") ]) .then <UserData[]>(res => { const userData = res[0].map(user => { return { //logic to manipulate userData }; }); return userData; }) .catch(console.error)}我嘗試過使用promise.all<any>()我讀過的各種其他技巧,但有關 Promise.all 和 Typescript 的文檔非常稀疏。如果有人能指出我正確的方向或告訴我我做錯了什么,我將不勝感激。
從 TypeScript 中的 Promise.all 返回正確的類型
慕容708150
2023-07-29 15:33:11