traits-decorator
Experimental library to apply Traits with ES7 decorators.
Install
using npm
npm i -S traits-decorator
using git repository
npm i -S git://github.com/cocktailjs/traits-decorator
API
Decorators
@traits(Trait1, ...TraitN)
Applicable to class
definition. It will apply all the given Traits to the class.
@ {}
@requires(description1, ...descriptionN)
Applicable to a method defined in a Trait. The decorator does nothing but it serves as a documentation to reflect what method / property the method needs access to.
@ { console; }
Bindings
excludes(Method1, ...MethodN)
Applicable to Trait definition in '@traits'. It will exclude the given method names from the Trait.
@ {}
alias(aliases: {})
Applicable to Trait definition in '@traits'. It will alias the method defined in the Trait with the key
as the value
.
@ {}
as({alias: {}, excludes: []})
Applicable to Trait definition in '@traits'. It will apply aliases and excluded methods from the Trait
@ {}
Usage
Basically, we have a few Traits (classes) TFirst, TLast and we combine and apply them by using traits
decorator:
example.js
'use strict'; @ { return thiscollection0; } @ { let collection = thiscollection; let l = collectionlength; return collectionl-1; } {} { console; } //composing a Trait with others@ { console } //apply trait TEnum@ { thiscollection = collection } let obj = 123 console // 1 obj // enum foo
In order to run the example.js
we need babel and since we are using some experimental functionality, decorators (@traits) and bindOperator (::) we need to use the --stage 0
.
babel-node --stage 0 example.js
Update
@mixins decorator has been removed. If you want to use mixins
please use mixins-decorator package.