2016-04-08 48 views
3

我有一个存储DOM查询结果的打字稿变量:打字稿中html元素的数组类型是什么?

let games = document.getElementsByTagname("game"); 

但是,什么是正确的结果类型数组的?我期望一个包含hmmlelements的数组?

// not working 
let games : Array<HTMLElement> = document.getElementsByTagName("game"); 
// also not working 
let games : NodeList<HTMLElement> = document.getElementsByTagName("game"); 
+0

您可以使用Array /Array 作为类型,查看任何人的作品或不是? – Ajay

+0

使用数组时出现此错误:'NodeListOf '不可分配为键入'Element []'。类型'NodeListOf '中缺少属性'push'。 – Kokodoko

+0

使用NodeListOf 而不是Array 。它可能会解决你的错误。 – Ajay

回答

3

您需要使用NodeListOf<T>,例如:

let games : NodeListOf<Element> = document.getElementsByTagName("game"); 

你可以使用类型断言来迫使它进入一个HTMLElement[],但这会产生误导的类型信息,让你的工具所在。

+2

啊..我没有意识到“NodeListOf”实际上是一种类型......(“Of”是什么意思?)。此外,DOM元素为什么有这么多不同的类型? (NodeList,NodeListOf,Element和HTMLElement)。从一种类型转换到另一种类型只是为了从我的DOM获取div,似乎很麻烦。 – Kokodoko