Существует несколько способов реализации составного шаблона для веб-компонентов.
Простой способ - определить базовый класс, который будет предоставлять некоторые методы (ваш унифицированный интерфейс), а затем определить различные пользовательские элементы, которые будут использоватьрасширение базового класса.
//Create a base class with unified methods (or props, or display)
class BaseElement extends HTMLElement {
sayYourName() {
console.log( "hello, I'm a " + this.localName )
}
}
//Define differents elements that extends the Base one
class Type1 extends BaseElement {}
customElements.define( 'type-1', Type1 )
class Type2 extends BaseElement {}
customElements.define( 'type-2', Type2 )
//Call the common method against diffrent types of custom elements
var elems = document.querySelectorAll( 'div *' )
elems.forEach( e => e.sayYourName() )
<div>
<type-1>Type1</type-1>
<type-2>Type2</type-2>
</div>