簡體   English   中英

具有數組解構器的“ Array.prototype.find()”的類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM