Существует два способа использования определения пользовательского элемента, и вы наблюдаете разницу между ними.
Если вы хотите использовать пользовательский элемент в качестве своего собственного элемента,например
<my-elem></my-elem>
Тогда вам нужно использовать extends HTMLElement
.Это то, что в настоящее время приводит к «Hello, World!»для вашего примера.
Если вы хотите, чтобы пользовательский элемент использовался с is = "", например
<div is="my-elem"></div>
, тогда вам также нужно использовать extends HTMLDivElement
как указано в определении customElements.define('my-elem', MyElement, {extends: 'div'});
Это два разных подхода к использованию, которые не смешиваются.Я бы предположил, что причина, по которой они не могут смешиваться, связана с тем, что наличие обеих работ потребует множественного наследования, а это не поддерживается.
Возможно, что-то можно взломать вместе, хотя это может показаться довольно неприглядным.Лучше всего использовать один или другой.