Immutable JS
Implementation example
by Guillaume Seguin
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.1/immutable.min.js"></script>
Babel + JSX
console.clear();
var apiUser = Immutable.Record({
email: undefined,
username: undefined,
firstName: undefined,
lastName: undefined,
fullName: undefined,
language: 'fr',
timezone: 'Europe/Paris'
});
class User extends apiUser {
constructor(args) {
super({
...args,
firstName: args.name.first,
lastName: args.name.last,
fullName: args.name.first + ' ' + args.name.last
});
}
}
var myUser = new User({
id: '57aaf4522152c67849d2563d',
email: '[email protected]',
username: 'fgrubber',
name: {
first: 'Franz',
last: 'Grubber'
},
fullname: 'Franz Grubber',
language: 'fr',
timezone: 'Europe/Paris',
oathKey: '9c61fb631e2cb9de297085851e8a9767455a0bf603afa6a78df0b8148f674feb4d3695ed0c19d8d7116479b1fc11e4b870a4cd379289342d88cdba9372ffb8771e06678d65955fd4c709efad704dfe409737bfe2e44d8f63aa9fe912dcfc7b678fee27071d73ac981b7b4dfdedcef16579a4f34b17c453e7134ff0befbea86c4d78369f898cae729d4c668603e0ca33b2f46ca2e65a130531985ddd1edc11fbf348783f21f5981cb4af71bdad7e5c60a474e9f26b08644d1c7c1542cd7cf9980138a905854df2d5b71deefbf56812b9098475d9a2a71e01d715f3a0929618eec1a5c90f025c590ec9828fc452ba0bdc3ff5d49cb624de63045780ac4f7a9089f',
api: {
revokedTokens: [
'fa1efcc7e5a17a460c841dea51e760139c08aef8'
],
tokens: []
},
applications: [{
id: '87aaa3ff45e4a26f49fd3eb4',
permissions: [
'read',
'write'
]
}]
});
console.log(myUser.toJS());
console.log(myUser.fullName);