我有这个功能来压扁一个物体
export function flattenObject(object: Object, prefix: string = "") {
return Object.keys(object).reduce((messages, key) => {
const value: Object | string = object[key];
const prefixed = prefix ? `${prefix}.${key}` : key;
const flatMessages = { ...messages };
if (typeof value === "string") {
flatMessages[prefixed] = value;
} else {
Object.assign(flatMessages, flattenObject(value, prefixed));
}
return flatMessages;
}, {});
}
在第3行,有一部分object[key]
说它没有被发现
[流程覆盖]未覆盖代码(参数)对象:对象[Flow]对象:对象
我不完全确定为什么,因为它确实说它是一个对象?然而,物体的形状可能会有所不同,所以我最初的假设可能是由于它的松散定义?如果有,是否有警告消息的解决方法?
我相信这是因为Flow期望对你的对象参数比Object
更好的注释,你可以尝试{}
快速获胜或为here创建类型注释(推荐)。
EG
flattenObject(object: { foo: string }, prefix: string = "") { ...