我试图破坏数组,但是出现以下错误:
类型“ 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
)使它正常工作?
答案 0 :(得分:1)
整个问题归结为以下事实:您正在尝试对可能无法解构的内容(例如undefined
)使用解构。
如果您确定let [alias, config] = Object.entries(info).find(...)
在用例中不会绝不会导致undefined
,那么您只需要强制转换即可:
let [alias, config] = Object.entries(info).find(/*...*/) as [string | DBConfig];
如果它可能导致undefined
,那么您将必须接受可为空的DBConfig
let [alias, config] = Object.entries(info).find(/*...*/) || ["", null];