Read Me!
Decorators are not even in the cut for ES7, which means if you want to use this extremely convenient little library, you'll have to compile it with Babel, using the following plugin: babel-plugin-transform-decorators-legacy.
How to use
As I was looking for an easier way to add type checking to my dependencies of other modules, I realised that most of the time I was simply writing the same things over and over. As awesome programmers, we should keep our code DRY and so this is what I came up with. Hope you'll like it and feel free to contribute to it.
Basic example:
import * as typecheck from 'decorators-typecheck'
class MyClass {
constructor(...args) {
this.data = args
}
@typecheck('string')
sayHello (name) {
console.log(`Hello, ${name}!`)
}
@typecheck('object', 'array')
compare (obj, arr) {
for (item of obj) {
if (arr.includes(obj[item])) {
console.log(`We've got a match: ${obj[item]}!`)
}
}
}
@typecheck('any', 'any', 'optional')
lastFunction (any, sortOf, arg) {
}
}
let myClass = new myClass()
myClass.sayHello('Daniel')
myClass.sayHello({name: 'Daniel'})
myClass.compare({ one: 'something', two: 'otherthing' }, ['something', 'somethingElse'])
myClass.compare(['something', 'somethingElse'], { one: 'something', two: 'otherthing' })
Learn More about Decorators
To learn more about decorators follow this link.