Skip to content

Instantly share code, notes, and snippets.

@oxwazz
Last active September 16, 2022 19:48
Show Gist options
  • Save oxwazz/cb558e45fa4593b58447d94dad5a38c1 to your computer and use it in GitHub Desktop.
Save oxwazz/cb558e45fa4593b58447d94dad5a38c1 to your computer and use it in GitHub Desktop.
[TypeScript] Safe Function
export const safeFunc = <T extends (...args: any[]) => any>(
func: T,
args: Parameters<T>,
defaultValue: ReturnType<T>
): [error: any, data: ReturnType<T>] => {
try {
const data = func(...args)
return [null, data]
} catch (e) {
return [e, defaultValue]
}
}
export const safeFuncAsync = async <T extends (...args: any[]) => Promise<any>>(
func: T,
args: Parameters<T>,
defaultValue: ReturnType<T>
): Promise<[error: any, data: Awaited<ReturnType<T>> | ReturnType<T>]> => {
try {
const data = await func(...args)
return [null, data]
} catch (e) {
return [e, defaultValue]
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment