@final-hill/decorator-contracts
Version:
Code Contracts for TypeScript and ECMAScript classes
6 lines (5 loc) • 511 B
text/typescript
import { Contracted } from './Contracted.mjs';
export type InvariantPredicate<Class extends typeof Contracted> = (self: InstanceType<Class>) => boolean;
export type InvariantDecorator = <Class extends typeof Contracted>(predicate: InvariantPredicate<Class>) => (value: Class, context: ClassDecoratorContext<Class>) => Class | void;
export declare function assertInvariants<C extends typeof Contracted, T extends InstanceType<C>>(Class: C, instance: T): void;
export declare const invariant: InvariantDecorator;