function withCallback<T, U>(cb?: (...args: any) => void, map?: (t: T) => U) {
return (value: T) => (cb ? cb(map ? map(value) : value) : constVoid());
}
// use case
Match.valueTags({
HttpUnexpected: (err) => (opts?.onError ? opts.onError(err) : constVoid()),
HttpBadRequest: (err) => (opts?.onError ? opts.onError(err) : constVoid()),
HttpFormValidation: withCallback(opts?.onValidationError, (err) => ???), // err is unknown
HttpUnauthorized: (err) => (opts?.onError ? opts.onError(err) : constVoid()),
}),
function withCallback<T, U>(cb?: (...args: any) => void, map?: (t: T) => U) {
return (value: T) => (cb ? cb(map ? map(value) : value) : constVoid());
}
// use case
Match.valueTags({
HttpUnexpected: (err) => (opts?.onError ? opts.onError(err) : constVoid()),
HttpBadRequest: (err) => (opts?.onError ? opts.onError(err) : constVoid()),
HttpFormValidation: withCallback(opts?.onValidationError, (err) => ???), // err is unknown
HttpUnauthorized: (err) => (opts?.onError ? opts.onError(err) : constVoid()),
}),