Определение компонента¶
Определите компонент Lit, создав класс, расширяющий LitElement
, и зарегистрировав свой класс в браузере:
1 2 3 4 |
|
Декоратор @customElement
— это сокращение для вызова customElements.define
, который регистрирует класс пользовательского элемента в браузере и связывает его с именем элемента (в данном случае simple-greeting
).
Если вы используете JavaScript или не используете декораторы, вы можете вызвать define()
напрямую:
1 2 3 4 |
|
Компонент Lit — это элемент HTML¶
Когда вы определяете компонент Lit, вы определяете пользовательский HTML-элемент. Поэтому вы можете использовать новый элемент так же, как и любой другой встроенный элемент:
1 |
|
1 |
|
Базовый класс LitElement
является подклассом HTMLElement
, поэтому компонент Lit наследует все стандартные свойства и методы HTMLElement
.
В частности, LitElement
наследуется от ReactiveElement
, который реализует реактивные свойства, и в свою очередь наследуется от HTMLElement
.
Обеспечение хороших типизаций TypeScript¶
TypeScript будет определять класс HTML-элемента, возвращаемого из некоторых DOM API, на основе имени тега. Например, document.createElement('img')
возвращает экземпляр HTMLImageElement
со свойством src: string
.
Пользовательские элементы могут получить такую же обработку, добавив в HTMLElementTagNameMap
следующее:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Благодаря этому следующий код правильно проверяет тип:
1 2 |
|
Мы рекомендуем добавить запись HTMLElementTagNameMap
для всех элементов, созданных на TypeScript, и убедиться, что вы опубликовали свои типы .d.ts
в пакете npm.