dojo / dojo/typings

declareDecorator does not bring along getters and setters

Open
#148 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
29
Forks
35
PR merge metrics
No merged PRs in 30d

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;
};
}
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.