【发布时间】:2021-06-16 02:57:03
【问题描述】:
我有这个对象模型:
export interface UpdateDocument {
updated_at?: string;
actions?: Actions;
}
export interface Actions {
update?: Update;
create?: Create;
}
export interface Update {
name?: Values;
priority?: Values;
engine?: Values;
fact?: Fact;
}
export interface Fact {
brand?: Values;
model?: Values;
version?: Values;
year?: Values;
km?: Values;
color?: Values;
}
export interface Values {
old?: any;
new?: any;
}
export interface Create {
conditions?: Object;
recipe?: Object;
}
在这个函数中,我尝试传递一个参数来引用一个对象字段并进行赋值:
async buildUpdateDocument (updateDocument: UpdateDocument) {
let fields: Array<string> = ['name','priority','engine','fact','adjustment'];
fields.forEach((field: string) =>{
updateDocument.actions!.update![field]!.old = await this.getValue(field)
})
}
但我有这个 ts 错误:元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型“更新”。 在 'Update'.ts(7053) 类型上没有找到带有 'string' 类型参数的索引签名
如何在这种引用中传递参数来进行赋值?
【问题讨论】:
-
需要考虑的一点是,在 forEach 中有
await可能会导致问题,因为 foreach 将立即解决并且代码不会等待。将Promise.all(yourforeach)包裹起来以确保所有承诺都得到解决是一种很好的做法。实际上,我什至不确定您是否需要在这里等待,因为我没有足够的上下文,
标签: node.js typescript object interface