Decorator for running a check before running a method.
npm install --save ts-guard-decorator
Decorators are supported in TypeScript or with Babel.
import guard from 'ts-guard-decorator';
class MyClass {
// Don't run `myFunc` if `window` doesn't exist
@guard(typeof window !== 'undefined')
myFunc() {
// ...
}
}
This is equivalent to writing:
class MyClass {
myFunc() {
if (typeof window === 'undefined') {
return;
}
// ...
}
}
The guard accepts 2 arguments:
- A boolean expression (i.e. something that evaluates to
true
orfalse
) indicating whether the method should run. - A optional return value if the method should not run.
function testGuardFunc(arg1, arg2) {
return arg1 === arg2;
}
class TestClass {
@guard(true)
guardTrue() {
return true;
} //=> true
@guard(false)
guardFalse() {
return true;
} //=> undefined
@guard(true, 'hello')
guardTrueRetVal() {
return true;
} //=> true
@guard(false, 'hello')
guardFalseRetVal() {
return true;
} //=> "hello"
@guard(testGuardFunc(1, 1), 'hello')
guardTrueFunc() {
return true;
} //=> true
@guard(testGuardFunc(1, 2), 'hello')
guardFalseFunc() {
return true;
} //=> "hello"
}