remeda
Version:
A utility library for JavaScript and Typescript.
18 lines (15 loc) • 583 B
text/typescript
import { Tagged } from 'type-fest';
declare const RemedaErrorSymbol: unique symbol;
type RemedaTypeErrorOptions = {
type?: unknown;
metadata?: unknown;
};
/**
* Used for reporting type errors in a more useful way than `never`.
*/
type RemedaTypeError<Name extends string, Message extends string, Options extends RemedaTypeErrorOptions = {}> = Tagged<Options extends {
type: infer T;
} ? T : typeof RemedaErrorSymbol, `RemedaTypeError(${Name}): ${Message}.`, Options extends {
metadata: infer Metadata;
} ? Metadata : never>;
export type { RemedaTypeError as R };