Tags
TypescriptJS
Project date
Created
Sep 7, 2020 4:20 PM
На самом деле далеко не во всех проектах может понадобиться подобный функционал, но в конкретно моем случае он здорово выручил.
В обычных проектах может понадобиться в качестве логгера для исключений, или там где мы можем использовать значение по-умолчанию если ответ нас не устроил.
В том числе умеет работать и со статическими методами
Пример использования:
class Foo {
@catchError(logFunction, false, 'defaultValue')
method1(): string { // return 'defaultValue' and log a error;
throw new Error('bar');
}
@catchError(logFunction, false, 'defaultValue')
method2(): Promise<string> { // return Promise<'defaultValue'> and log a error;
return Promise.reject(new Error('bar'));
}
@catchError({ catchFunction: logFunction, throwErr: true })
async method(): Promise<any> { // reject Error('baz') and log function call
const value = await (async function() { throw new Error('baz'); })();
return value;
}
@catchError(logFunction)
get property() { // throw Error('deprecated method') and log call function
throw new Error('deprecated method');
}
@catchError(logFunction, false)
static Method() { // return undefined and log static function call. Cause you haven't define defaultValueOnError.
return Promise.reject(new Error('baz'));
}
@catchError(logFunction)
static get Property() { // just return 123;
return 123;
}
}
Npm package: