ut2
Version:
一个现代 JavaScript 实用工具库。[点击查看在线文档]。
23 lines (22 loc) • 896 B
TypeScript
import { SingleAsyncFn, SingleSyncFn } from './internals/types';
interface Guard {
<R>(fn: SingleAsyncFn<R>, shouldGuard?: () => boolean): Promise<R | undefined>;
<R>(fn: SingleSyncFn<R>, shouldGuard?: () => boolean): R | undefined;
}
/**
* 函数守卫。
*
* @alias module:Util.guard
* @since 1.14.0
* @param {Function} fn 要执行的函数。
* @param {Function} [shouldGuard] 函数守卫断言。如果返回 `Truthy` 表示需要守卫,否则不需要守卫。
* @returns 如果函数执行成功,正常返回结果;如果异步函数拒绝或抛出错误时,有函数守卫返回 `undefined`,否则抛出错误。
* @example
* guard(() => 42); // 42
* await guard(() => Primise.resolve(42)); // 42
*
* guard(() => { throw new Error() }); // undefined
* await guard(() => Promise.reject()); // undefined
*/
declare const guard: Guard;
export default guard;