Вам необходимо привести элемент к ожидаемому типу, поскольку Typescript не может знать тип в этом сценарии.
const myElement = <CustomElement>document.createElement('my-element');
Также вам нужно наследовать класс HTMLElement в вашем CustomElement:
class CustomElement extends HTMLElement {
Отредактированный ответ, основанный на дополнительных вопросах:
Очевидно, что если вы когда-нибудь захотите получить доступ к свойствам CustomElement
объекта, вам нужно будет набрать cast.Однако во всех других случаях вы можете просто использовать тип по умолчанию HTMLElement
.Он по-прежнему должен позволять вам выполнять определенные операции над объектом, только не связанные с CustomElement
.Так что не все службы должны знать, что это CustomElement
объект.
Для насмешки вы можете создать класс CustomElementMock
, который наследуется от CustomElement
class CustomElementMock extends CustomElement {
}
.по-прежнему типа CustomElement
, и ваш исходный код все равно должен его принять.Однако внутри смоделированного класса вы можете перезаписать все функции, чтобы либо ничего не делать, либо возвращать смоделированные данные.