【问题标题】:Typescript compile error: Property 'classList' does not exist on type 'Node'打字稿编译错误:“节点”类型上不存在属性“classList”
【发布时间】:2021-07-16 02:28:46
【问题描述】:

Windows 7 x64

使用 gulp-typescript 2.7.7 使用 typescript 1.5 beta 进行编译

出现错误:由于语句,类型“节点”上不存在属性“类列表” document.getElementsByClassName('left-aside-wrapper')[0].classList.toggle('isOpen');

我看到 classList 在 lib.d.ts 文件中定义为 interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelector, ChildNode { classList: DOMTokenList;

不太熟悉 d.ts 文件的工作原理,这是我的错误还是需要报告的 d.ts 文件中的错误?

【问题讨论】:

    标签: typescript typescript1.5


    【解决方案1】:

    当我想更新第一个孩子的 classList 时,我遇到了同样的问题。

    我的解决方案是

    const element = document.getElementById('testId').firstChild as HTMLElement;

    【讨论】:

      【解决方案2】:

      这是因为 getElementsByClassName 被定义为返回 Node 数组而不是 Element 数组。

      不是很熟悉 d.ts 文件的工作原理,所以这是我的错误还是需要报告的 d.ts 文件中的错误

      基于https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName,我会将其报告为错误。

      【讨论】:

        【解决方案3】:

        使用firstElementChild 代替firstChild(即代替getElementsByClassName('')[0]

        所以

        document.getElementsByClassName('left-aside-wrapper').firstElementChild.classList.toggle('isOpen')
        

        【讨论】:

        • 你是对的,对不起。 getElementsByClassName('')[0] 暗示它是 firstChild,但值得解释一下
        猜你喜欢
        • 2023-02-03
        • 2015-01-17
        • 1970-01-01
        • 2017-03-26
        • 2022-06-22
        • 1970-01-01
        • 2021-02-19
        • 1970-01-01
        • 2018-11-30
        相关资源
        最近更新 更多