Skip to content

Instantly share code, notes, and snippets.

@itzjonas
Created May 8, 2025 17:44
Show Gist options
  • Save itzjonas/60f2b7fcbc815029f9de66431f4fa4b7 to your computer and use it in GitHub Desktop.
Save itzjonas/60f2b7fcbc815029f9de66431f4fa4b7 to your computer and use it in GitHub Desktop.
type Success<T> = {
data: T;
error: null;
};
type Failure<E> = {
data: null;
error: E;
};
type Result<T, E = Error> = Success<T> | Failure<E>;
// const { data, error } = await tryCatch(badFunc);
// if (error) return { error: 'unable to process' };
export async function tryCatch<T, E = Error>(
promise: Promise<T>
): Promise<Result<T, E>> {
try {
const data = await promise;
return { data, error: null };
} catch (error) {
return { data: null, error: error as E };
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment