打字稿:如何检查变量是否属于 Element 类型?ReferenceError:未定义元素

Typescript: How to check if variable is of type Element? ReferenceError: Element is not defined

提问人:MWHmann 提问时间:9/5/2023 最后编辑:MWHmann 更新时间:9/5/2023 访问量:55

问:

我正在使用带有 TypeScript 和 xmldom 包的 Node 来解析 xml 文件并迭代它以将其转换为 JavaScript 类。 为此,我正在迭代 childNodes

constructor(xmlElement: Element) {
    for (let childNode of xmlElement.childNodes) {
        if (childNode instanceof Element) {
            if(childNode.tagName=="myTag") { /* do something depending on which tag it is*/ }
            /* a lot of similar if statements */
        }
        else {
            /* do something for text nodes*/
        }
    }
}

但是,运行此代码会给我错误消息:“ReferenceError: Element is not defined”。即使它应该作为 JavaScript 的标准类存在,如果我没记错的话。

按照 9979172 中的建议使用会引发错误。使用逻辑方面的工作原理和代码按预期运行,但 TypeScript 无法推断这等效于并将每个 if 语句标记为 TypeScript 错误,并且每增加一行就违背了使用 TypeScript 的目的。if(childNode.nodeType == Node.ELEMENT_NODE)Node is not definedif(childNode.innerHTML)childNode instanceof ElementchildNode.tagNamechildNode.innerHTML//@ts-ignore

我在一个相关问题中读到,Element 可能不存在在 Node 中,因为服务器上没有 DOM,如果是这种情况,我正在寻找替代解决方案,这不会导致 TypeScript 错误。

节点 .js 打字稿 XML 解析 XMLDOM

评论

1赞 Felix Fong 9/5/2023
也许你可以看看JSDOM(github.com/jsdom/jsdom)?它基本上是一个与 Node 运行时一起工作的 DOM 解析器,它提供了一个与浏览器类似的 DOM API,如果不是完全的话

答: 暂无答案