Typescript:TextNode 的类型

Typescript: The type of TextNode

如果你写下面的代码:

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 编写你的条件,因此它将 return "#text" 作为文本节点。

nodeName Example on MDN

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

Character​Data (MDN)

Text (MDN)