[英]Types for 'Array.prototype.find()' with an array deconstructor
我正在嘗試破壞數組,但出現以下錯誤:
類型'undefined'必須具有返回迭代器的'Symbol.iterator'方法。
let [alias, config]: [string, DBConfig] | undefined = Object.entries(info).find(...)
這就是find
定義所顯示的內容,與我定義的內容相同。
(method) Array<[string, DBConfig]>.find(predicate: (
value: [string, DBConfig],
index: number,
obj: [string, DBConfig][]) => boolean, thisArg?: any
): [string, DBConfig] | undefined (+1 overload)
如果我刪除定義,則它看起來像這樣:
let [alias, config] = Object.entries(info).find(...)
然后,我得到同樣的錯誤。 我該怎么做(不使用any
)使它起作用?
整個問題歸結為以下事實:您試圖對可能無法解構的對象(例如, undefined
)使用解構。
如果您確定let [alias, config] = Object.entries(info).find(...)
在您的用例中永遠不會導致undefined
,那么您只需要let [alias, config] = Object.entries(info).find(...)
即可:
let [alias, config] = Object.entries(info).find(/*...*/) as [string | DBConfig];
如果可能導致undefined
那么您將必須接受可為空的DBConfig
let [alias, config] = Object.entries(info).find(/*...*/) || ["", null];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.