export function updateAttributes(attributes: string[][], data: Object, element: HTMLElement): void {
attributes.forEach(([attr, value]) => {
let parsed = parseString(value, data)
if (value !== element.attributes[attr]) {
element.attributes[attr] = parsed
}
})
}
我有这个功能。我无法在element.attributes[attr]
上设置属性。
它说
元素隐式地具有“ any”类型,因为索引表达式不是“ number”类型。
我不明白为什么?有人可以解释一下为什么我不能设置简单的属性吗?
答案 0 :(得分:0)
这里的打字稿是正确的。
HTMLElement.attributes
is a NamedNodeMap
, which is indexed by numbers like an array.但是attr
在这里显然是一个字符串。
如果要使用此属性,则需要使用the NamedNodeMap
api来获取/设置属性
或者您可以直接在正常工作的元素上调用getAttribute
和setAttribute
。
export function updateAttributes(attributes: string[][], data: Object, element: HTMLElement): void {
attributes.forEach(([attr, value]) => {
let parsed = parseString(value, data)
// Call getAttribute and setAttribute directly on element
if (value !== element.getAttribute(attr)) {
element.setAttribute(attr, parsed)
}
})
}