@cosmicmind/domainjs
Version:
A domain-driven design framework for scalable systems.
19 lines • 818 B
TypeScript
import { FoundationError } from '@cosmicmind/foundationjs';
export declare abstract class Value<V> {
private readonly _value;
get value(): V;
constructor(value: V);
protected prepare?(value: V): V;
}
export type ValueTypeFor<V> = V extends Value<infer T> ? T : V;
export type ValueConstructor<V extends Value<unknown>> = new (value: ValueTypeFor<V>) => V;
export declare class ValueError extends FoundationError {
}
export type ValueLifecycle<V> = {
created?(vo: V): void;
trace?(vo: V): void;
validator?(value: ValueTypeFor<V>, vo: V): boolean | never;
error?(error: ValueError): void;
};
export declare const defineValue: <V extends Value<ValueTypeFor<V>>>(_class: ValueConstructor<V>, handler?: ValueLifecycle<V>) => (value: ValueTypeFor<V>) => V;
//# sourceMappingURL=Value.d.ts.map