Этот код работает в машинописном файле:
interface Node {
replaceWith(newnode): void;
}
Node.prototype.replaceWith = function(newnode: Node) {
this.parentElement.replaceChild(newnode, this);
};
Он перестает работать, как только файл становится модулем. Итак, добавив это:
export let x = 42 // export statement turns the ts file into a module
компилятор жалуется: Свойство replaceWith не существует для типа 'Node'. Почему это и как обойти?
Я понимаю, что расширение должно быть объявлено в глобальной "области видимости", и модуль больше не является достаточно глобальным. Но в то время как в C ++, например, я всегда могу добавить квадратные скобки вокруг блока и сделать его глобальной областью видимости, в машинописном тексте я не вижу аналогичного пути.