reasonable-error
Version:
Create type-safe custom error classes with a specific reason + associated context.
19 lines • 926 B
TypeScript
export declare const createErrorClass: <ReasonContextMap extends Record<string, unknown>>() => <ClassName extends string>(className: ClassName) => Record<ClassName, {
new <SpecificReason extends keyof ReasonContextMap>(message: string, additionalInfo: {
reason: SpecificReason;
cause?: Error;
} & (ReasonContextMap[SpecificReason] extends undefined ? {} : {
context: ReasonContextMap[SpecificReason];
})): {
readonly reason: SpecificReason;
readonly context: ReasonContextMap[SpecificReason];
name: string;
message: string;
stack?: string;
cause?: unknown;
};
}> & Record<`is${ClassName}`, (value: unknown) => value is Error & (keyof ReasonContextMap extends infer T ? T extends keyof ReasonContextMap ? T extends string ? {
reason: T;
context: ReasonContextMap[T];
} : never : never : never)>;
//# sourceMappingURL=index.d.ts.map