Typescript:TextNode 的类型

标签 typescript dom textnode child-nodes dom-node

如果你写下面的代码:

const e = document.body.firstChild;
if (e.nodeType === Node.TEXT_NODE)
    console.log(e.data);

您将在 e.data 上收到此错误消息:

TS2339: Property 'data' does not exist on type 'ChildNode'.



而如果条件为真 ( e.nodeType === Node.TEXT_NODE ) 那么 e除了常规的 ChildNode 之外,还有一些其他属性属性,例如 data wholeText .

我应该转换成什么类型​​(any 除外)?

最佳答案

我认为您应该根据 nodeName 编写您的条件,因此它将为文本节点返回“#text”。

nodeName Example on MDN

您在 TypeScript 中寻找的界面是 CharacterData或者干脆Text . Text界面你将拥有datawholeText属性,因为它实现了 characterData界面。在 characterData你只有 data 的抽象接口(interface)支柱。

Character​Data (MDN)

Text (MDN)

关于Typescript:TextNode 的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55821761/

相关文章:

go - Go的http服务器可以编译 typescript 吗?

typescript - ECMAScript 2016 装饰器是否使 TypeScript 装饰器变得多余?

javascript - 如何在JS中的文本节点(document.createTextNode ('...'))中添加span元素?

JavaScript 文本节点属性

javascript - 设置/获取文本节点值的方法

javascript - 在 Angular 7 中,如何从英语 (LTR) 加载阿拉伯语 (RTL) 的 CSS

TypeScript:扩展运算符上的类型错误

performance - 如何处理页面上数十万个 DOM 元素?

javascript - 使用 JavaScript 事件委托(delegate)设置删除事件监听器的有效方法是什么

jquery - 随机 jQuery Dom 访问失败——没有想法