【发布时间】:2020-03-22 01:07:18
【问题描述】:
我有这个代码:
const listItems = Array.from(document.querySelectorAll('li'));
listItems.splice(0, 0, '');
它给了我一个错误 '""' 类型的参数不能分配给 'HTMLLIElement' 类型的参数。(2345)
我已经在使用 Array.from,为什么 Typescript 不明白这是一个数组而不是 HTMLLIElement
【问题讨论】:
-
那么您是否尝试 1)查询文档中的
<li>元素,2)然后从每个元素中提取文本并将其放入数组中,3)最后尝试插入一个项目在索引0?如果是这样,您似乎还没有完成第 2 步来提取textContent,因此listItems仍然是一个 html 元素数组,您将无法使用非 html 元素值修改该数组。 -
这只是显示错误的简化测试,我只是不明白为什么打字稿不将其视为数组。不要试图理解它背后的逻辑,更多的是如何告诉 typescript 这是一个数组
-
它确实将其视为一个数组,错误是说,您不能将
string类型的项添加到HTMLLIElement类型的数组中。''在splice的第三个参数中是有问题的string。如果要在其中拼接一个string,则需要制作string的数组和数组。 -
好吧,你有一个解决方案,所以它不会把它看作一个数组而是一个数组?因为我用 Array.from 将它转换为数组
-
是的,我添加了一个答案。使用
Array.prototype.map或类似方法,创建一个针对每个<li>元素的相应属性的数组。然后你可以拼接到那个新的string[]数组上。
标签: typescript