打字稿:将 HTMLElement 转换为节点

斯特凡

如何将 a 转换HTMLElementNode元素。

根据这个答案(https://stackoverflow.com/a/9979779/639035)一An element is one specific type of node......但我不能找到一种方法将它们转换。

我特别需要一个 Node 元素,将它传递给一个MutationObserverhttps://nitayneeman.com/posts/listening-to-dom-changes-using-mutationobserver-in-angular/),并HTMLElement抛出一个错误。

克里斯蒂安·特雷纳

TypeScript 只为已经存在的对象提供类型定义,它不能修改对象的性质。所以,你的问题是关于 javascript 而不是关于打字稿。

lib.dom.d.ts(Angular 使用的类型定义库)内部,MutationObserver 对象没有多少正确定义:

interface MutationObserver {
    disconnect(): void;
    observe(target: Node, options: MutationObserverInit): void;
    takeRecords(): MutationRecord[];
}

其中target定义为Node元素。

HTMLElement在同一个文件中定义,它扩展Element了扩展Node. 因此HTMLElement,放入目标属性应该没有任何问题。

更好的类型定义是:

observe<T extends Node>(target: T, options: MutationObserverInit): void;

但是由于没有提供这个类型定义,如果你告诉编译器它完全没问题,只是element as Node在回调中传递会更好

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章