3.7.2.8.1. Создание компонентов Polymer на TypeScript
С декораторами TypeScript от Polymer создание классов компонентов стало удобнее, а код компактнее. Рассмотрим декораторы на следующем примере:
/// <reference path="../bower_components/cuba-app/cuba-app.d.ts" />
/// <reference path="../bower_components/app-layout/app-drawer/app-drawer.d.ts" />
/// <reference path="../bower_components/app-layout/app-drawer-layout/app-drawer-layout.d.ts" />
namespace myapp {
// Create shortcuts to decorators
const {customElement, property, observe, query} = Polymer.decorators;
@customElement('myapp-component')
class MyappComponent extends (Polymer.mixinBehaviors([CubaAppAwareBehavior, CubaLocalizeBehavior], Polymer.Element) as
new () => Polymer.Element & CubaAppAwareBehavior & CubaLocalizeBehavior) {
@property({type: Boolean})
enabled: boolean;
@property({type: String})
caption: string;
@query('#drawer')
drawer: AppDrawerElement;
@observe('app')
_init(app: cuba.CubaApp) {
...
}
@computed('enabled', 'caption')
get enabledCaption() {
...
}
}
}
-
/// <reference path="…"/>
- позволяет импортировать декларации TypeScript из других элементов или библиотек. -
@customElements('element-name')
- этот декоратор избавляет от необходимости опрелелять методstatic get is()
и вручную вызыватьcustomElements.define()
. -
@property()
- позволяет задавать свойства компонента. -
@query('.css-selector')
- позволяет выбирать DOM-элементы компонента. -
@observe('propertyName')
- позволяет указать observer для данной property. -
@computed()
- позволяет задать computed-методы.
Больше примеров вы можете найти в репозитории polymer-decorators на GitHub.