【发布时间】:2021-05-07 17:41:03
【问题描述】:
我有一个方法可以从嵌套对象中创建一个扁平对象数组。
{a: 'b',
c: {d: 'e'}
}
将会
[{a: 'b'}, {d:'e'}]
所以这个方法的返回类型是一个对象数组(Record<string, any>[])。但是 Typescript 给出了以下错误:
TS2769:没有与此调用匹配的重载。
...
'Record
_flatten 方法的正确返回类型是什么:
const _flatten = (obj: Record<string, any>): Record<string, any>[] =>
[].concat(...Object.keys(obj)
.map((key: string) => (
typeof obj[key] === 'object' ? _flatten(obj[key]) : { [key]: obj[key] }
))
);
【问题讨论】:
-
主要问题是您正在映射 - 这意味着结果是单个对象或对象数组。你可以使用
flatMap来解决这个问题,你也不需要做[].concat(... /*mapping*/)
标签: typescript