base decorate
change way component are created in typescript
Merge branch 'better-type' into typescript-hierarchical-model