ts-sum-types
Version:
Algebraic sum types for TypeScript, designed after Rust's enums
11 lines (10 loc) • 775 B
TypeScript
export interface ValueFactory<Args extends unknown[], Value extends unknown[]> {
(...args: Args): Value;
}
export declare function id<T extends unknown[] = never[]>(): ValueFactory<T, T>;
export declare function id<T extends Exclude<unknown, unknown[]>>(): ValueFactory<[T], [T]>;
export declare function id<T1, T2>(): ValueFactory<[T1, T2], [T1, T2]>;
export declare function id<T1, T2, T3>(): ValueFactory<[T1, T2, T3], [T1, T2, T3]>;
export declare function id<T1, T2, T3, T4>(): ValueFactory<[T1, T2, T3, T4], [T1, T2, T3, T4]>;
export declare function id<T1, T2, T3, T4, T5>(): ValueFactory<[T1, T2, T3, T4, T5], [T1, T2, T3, T4, T5]>;
export declare function id<T1, T2, T3, T4, T5, T6>(): ValueFactory<[T1, T2, T3, T4, T5, T6], [T1, T2, T3, T4, T5, T6]>;