typescript - 如何在打字稿中访问类型化的对象值
问题描述
我已经在谷歌上搜索了几个小时,但无法解决这个问题..
我有一个界面:
interface Alert {
uuid: string,
city: string,
address: number
}
我想迭代一个对象,它肯定符合这个接口:
const alerts: Alert[] = response.from.api.alerts
现在当我尝试做这样的事情时,我在 ts 编译器中得到一个错误:
for (const alert of alerts) {
for(const field in alert) {
// this shows an error: Element implicitly has an 'any' type... ts(7053)
console.log(alert[field])
}
}
访问警报对象值的正确方法是什么?
我应该使用类型保护或类似的东西吗?
我如何向打字稿声明该字段是警报的关键?
我应该禁用 noImplicitAny 标志 - >这被认为是“最佳实践”吗?
我知道这个问题已经被问过很多次了,但没有一个答案对我有帮助..
感谢您的帮助!
解决方案
所以,我找到了一种方法来处理这个错误(ts.7053)。
首先,谢谢大家的帮助,但我相信我的问题具有误导性。正确的问题应该是 -> 如何在 for 循环中使用括号表示法访问类型化对象。
我创建了一个名为 Indexable 的新接口,如下所示:
export interface Indexable {
[key: string]: any;
}
我的“警报”界面现在扩展了这个界面:
interface Alert extends Indexable {
uuid: string,
city: string,
address: number
}
现在我可以对键入为“警报”的对象执行 for 循环而不会出现错误:
...
for(const field in alert) {
console.log(alert[field]
}
...