我期望類型void []與void類型兼容。具體來說,使用Promise.all時。類型Void []數組不可分配給類型void
class Foo {
delete(): Promise<void> {
// do delete
return Promise.resolve();
}
deleteMany(list: Foo[]): Promise<void> {
return Promise.all(list.map((x) => x.delete()));
}
打字稿錯誤:
'Type 'Promise<void[]>' is not assignable to type 'Promise<void>'. Type 'void[]' is not assignable to type 'void'.'
我可以解決這個兩個方法,我知道的:
- 馬克deleteMany爲返回無極<無效[] >。
Promise chain to Promise.all,返回已解決的承諾。例如
return Promise.all(list.map((x) => x.delete())).then(() => Promise.resolve());
第二個更糟糕的是,因爲代碼位在JavaScript執行,但第一個是混亂到開發商。 Typescript對Promise.all有沒有很好的支持,還是從文檔中省略了?任何人找到更好的解決方案
爲什麼不把'deleteMany'標記爲返回'Promise'?這不是一個可憐的支持,這是一個'Promise.all'調用返回... –
由於@MikeMcCaughan建議..我同意.. Promise.all返回一個數組類型的承諾,在這種情況下,它是無效的 – radix
第3選項:只需完全關閉返回類型。如果使用不正確,編譯器會推斷它並引發錯誤。去1或3,2沒有意義。 –