Skip to content

Instantly share code, notes, and snippets.

@smarenkov
Created January 17, 2026 16:57
Show Gist options
  • Select an option

  • Save smarenkov/a3cd25595592111e5222d20dff269f9f to your computer and use it in GitHub Desktop.

Select an option

Save smarenkov/a3cd25595592111e5222d20dff269f9f to your computer and use it in GitHub Desktop.
Try Catch
type Success<T> = {
data: T;
error: null;
};
type Failure<E> = {
data: null;
error: E;
};
type Result<T, E = Error> = Success<T> | Failure<E>;
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 };
}
}
@smarenkov
Copy link
Author

Example of using:

let { data: lastLog, error } = await tryCatch(this.logService.getLastLog());

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment