Typescript编译错误:类型'Node'上不存在属性'classList'

时间:2015-06-29 00:18:35

标签: typescript typescript1.5

Windows 7 x64

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

获取错误:由于语句,属性'classList'在类型'Node'上不存在 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文件中需要报告的错误?

4 个答案:

答案 0 :(得分:7)

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

我的解决方法是

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

答案 1 :(得分:3)

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

  

并非所有熟悉d.ts文件的工作方式都是如此,这是我的错误,还是d.ts文件中需要报告的错误

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

答案 2 :(得分:1)

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

所以

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

答案 3 :(得分:0)

我也面临着非常相似的问题,并且在以下代码的帮助下进行了修复。希望它能工作-

const target = document.getElementsByClassName('testClass')[0].classList.add('someclassname') 

有关详细信息,请参阅此文档-
https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName