-
Notifications
You must be signed in to change notification settings - Fork 36
Open
Description
If you use the declareDecorator on a class all the getters and setters are lost.
I was having issues making a PR so here is the updated version of https://github.com/dojo/typings/blob/master/examples/basicApp/src/app/declareDecorator.ts:
import dojoDeclare from 'dojo/_base/declare';
/**
* A decorator that converts a TypeScript class into a declare constructor.
* This allows declare constructors to be defined as classes, which nicely
* hides away the `declare([], {})` boilerplate.
*/
export default function (... mixins: Object[]) {
return function (target: Function) {
let declared = dojoDeclare(mixins, target.prototype);
// Bring getters and setters along for the ride
Object.keys(target.prototype).forEach(key => {
let descrip = Object.getOwnPropertyDescriptor(target.prototype, key);
if (typeof descrip.get == 'function' || typeof descrip.set == 'function') {
Object.defineProperty(declared.prototype, key, descrip);
}
});
return declared;
};
}
Metadata
Metadata
Assignees
Labels
No labels