@pashoo2/clean-architecture-boilerplate
Version:
Clean architecture boilerplate
31 lines (30 loc) • 1.13 kB
TypeScript
import { TSimpleType, TSimpleObject, TSimpleArray } from './common';
export interface ISerializer<V, S extends TSimpleType> {
(value: V): S;
}
export interface ISerializerAsync<V, S extends TSimpleType> {
(value: V): Promise<S>;
}
export interface ISerializable<S extends TSimpleType> {
serialize(): S;
}
export interface ISerializableAsync<S extends TSimpleType> {
serialize(): Promise<S>;
}
export declare type TPropertySerializable = ISerializable<string> | TSimpleType;
interface ISerializableSimpleObject {
[key: string]: TSerializableSimple;
}
export declare type TSerializableSimple = TSimpleObject | TSimpleType | TSimpleArray | ISerializableSimpleObject | Date | Number | String | {
toString(): TSerializableSimple;
};
export interface IParsable<S extends TSimpleType, P extends unknown> {
parse(serialized: S): P;
}
export interface IParsableAsync<S extends TSimpleType, P extends unknown> extends IParsable<S, Promise<P>> {
}
interface ISerializableObject {
[key: string]: TSerializableValue;
}
export declare type TSerializableValue = {} | TSimpleType | ISerializableObject;
export {};