类型“Node”上不存在属性“querySelector”。在打字稿中

新手上路,请多包涵

我有以下代码:test.html

 <!DOCTYPE html>
<html>
<head lang="zh-CN">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1"/>
    <title></title>
</head>
<body>
    <div id="container">
        <div id="box"></div>
    </div>
    <script src="test.js"></script>
</body>
</html>

和 ts 文件 test.ts

 var box = document.querySelector('#box');
console.log(box.parentNode.querySelector('#box'));

我得到了错误。

 Error:(2, 28) TS2339: Property 'querySelector' does not exist on type 'Node'.

我在 MDN 中找到了下面这句话

parentNode 是当前节点的父节点。元素的父节点是 Element 节点、Document 节点或 DocumentFragment 节点。

这是我的测试

var ul = document.querySelector('ul')
undefined
ul.parentNode.toString()
[object HTMLDivElement]"

有人可以告诉我那有什么问题吗?

打字稿的版本是1.4

原文由 Stackoverflow 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
1 个回答

有人能告诉我这有什么问题吗

TypeScript 的 API 视图。目前没有办法说 foo.parentNode 的类型取决于 foo 的类型。 Currently it is inferred to always be of type Node and Node does not contain the API querySelector (available on Element )

使固定

使用类型断言,如下所示:

 var box = document.querySelector('#box');
console.log((<Element>box.parentNode).querySelector('#box'));

原文由 basarat 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题