ember-decorators / ember-decorators/argument

Argument with default value is not enumerable

Open
#110 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
30
Forks
18
PR merge metrics
No merged PRs in 30d

Description

Hi!
We are using ` "@ember-decorators/argument": "0.8.21",` and noticed that if we have a default value for an argument annotated with `@argument` keyword, that property becomes non-enumerable.

We need all own properties to be enumerable to support converting ember object to simple javascript object for storing in localstorage. For this we do `Object.keys` on an ember object and recursively serialize object to a plain JS object.

So if we do:
```js
/**
* @type {number}
*/
@argument('number')
amount = 0;
```
we see that this property is not part of `Object.keys`. If we log this object in chrome console this property is greyed out. If we simply remove default value like this:
```js
/**
* @type {number}
*/
@argument('number')
amount;
```
all starts to work fine.

Same with optional value, this code also leads to property not being enumerable:
```js
/**
* @type {number}
*/
@argument(optional('number'))
amount = 0;
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.