Какое-нибудь особенное? Тип «Node» не может быть преобразован в тип «ChildNode» - PullRequest
2 голосов
/ 28 июня 2019

У меня есть это:

const node = window.getSelection().getRangeAt(0).startContainer;
(node as ChildNode).replaceWith(...nodes)

Выше выдает ошибку во время сборки:

Тип 'Node' не может быть преобразован в тип 'ChildNode'

Свойство «удалить» отсутствует в типе «Узел»

Но если I:

(node as any).replaceWith(...nodes)

Хорошо компилируется.Кто-нибудь может объяснить?

РЕДАКТИРОВАТЬ:

Ответ от Ritaj, который получает голосование не решает мою проблему

1 Ответ

3 голосов
/ 28 июня 2019

Сделай тип охранника:

function isChildNode(node: Node): node is ChildNode {
    // Might want some other property checks as well
    return 'replaceWith' in node;
}

И охранник типа:

const node: Node = window.getSelection().getRangeAt(0).startContainer;

if (isChildNode(node)) {
    node.replaceWith();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...