9

如果你写下面的代码:

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

您将在以下位置收到此错误e.data

TS2339:“ChildNode”类型上不存在属性“数据”。

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


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

4

1 回答 1

4

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

MDN 上的 nodeName 示例

您在 TypeScript 中寻找的界面是CharacterData或简单Text的 . Text接口上,您将同时拥有datawholeText属性,因为它实现了characterData接口。在characterData抽象接口上,您只有data道具。

字符数据 (MDN)

文本 (MDN)

于 2019-05-19T17:49:11.707 回答