无法在打字稿中设置属性

时间:2020-11-04 19:41:00

标签: javascript typescript

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”类型。

我不明白为什么?有人可以解释一下为什么我不能设置简单的属性吗?

1 个答案:

答案 0 :(得分:0)

这里的打字稿是正确的。

HTMLElement.attributes is a NamedNodeMap, which is indexed by numbers like an array.但是attr在这里显然是一个字符串。

如果要使用此属性,则需要使用the NamedNodeMap api来获取/设置属性


或者您可以直接在正常工作的元素上调用getAttributesetAttribute

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)
        }
    })
}

Playground