LendAndRegret/node_modules/es-toolkit/dist/compat/function/attempt.d.ts
2026-05-02 17:27:43 +08:00

34 lines
1.2 KiB
TypeScript

/**
* Attempts to execute a function with the provided arguments.
* If the function throws an error, it catches the error and returns it.
* If the caught error is not an instance of Error, it wraps it in a new Error.
*
* @param {(...args: any[]) => R} func - The function to be executed.
* @param {...any[]} args - The arguments to pass to the function.
* @returns {R | Error} The return value of the function if successful, or an Error if an exception is thrown.
*
* @template R - The type of the function return value.
*
* @example
* // Example 1: Successful execution
* const result = attempt((x, y) => x + y, 2, 3);
* console.log(result); // Output: 5
*
* @example
* // Example 2: Function throws an error
* const errorResult = attempt(() => {
* throw new Error("Something went wrong");
* });
* console.log(errorResult); // Output: Error: Something went wrong
*
* @example
* // Example 3: Non-Error thrown
* const nonErrorResult = attempt(() => {
* throw "This is a string error";
* });
* console.log(nonErrorResult); // Output: Error: This is a string error
*/
declare function attempt<R>(func: (...args: any[]) => R, ...args: any[]): R | Error;
export { attempt };