我正在尝试将一个实用程序函数放在一起,该函数将查看对象中键[?]的值并检测何时未定义。 目的是根据数据库查询返回的“行”对对象进行完整性检查-如果数据库中不存在该列,则需要对此进行标记。 经过一些搜索后,我得到以下信息:
...
{
const newEv: myEventType = {
position: { lat: row.LatV, lng: row.LongV },
txt: row.Text
}
const undef: string = CheckUndefined(newEv, "myEventType")
}
function CheckUndefined(ev: object, evName: string): string {
let exc: string = ""
const keys = Object.keys(ev)
keys.map(key => {
if (Reflect.get(ev, key) === undefined) {
if (exc.length == 0) {
// TODO Not have to pass 'evName' to this function
exc = `Undefined fields in ${evName}:`
}
exc += " " + `'${key}'`
}
// else if ....
// TODO Determine if the key is itself an object, in which case recurse into it too
else
console.log(`Good, ${key} is indeed defined`)
})
return exc
}
(可能有一些更流畅的方法吗,但这就是我的阅读所想出的)
这可行,但是我想进一步增强(请参阅TODO): 1.重要的是,键可能是对象本身(例如“位置”),在这种情况下,我想递归并对其进行检查。 2.理想情况下,不必将“ evName”传递给函数-让CheckUndefined从“ ev”自动检测到它)
非常感谢您收到的任何帮助/改进。