15 lines
506 B
TypeScript
15 lines
506 B
TypeScript
export type Row<
|
|
L extends number,
|
|
T extends any[] = []
|
|
> = T["length"] extends L ? T : Row<L, [string, ...T]>;
|
|
export type Builder = <Count extends number, Loaded, Sized extends Row<Count>>(params:
|
|
{
|
|
path:string,
|
|
cols:Count,
|
|
load:(commitLoad:(id:string, data:Loaded)=>Sized, ...args:Sized)=>[id:string, data:Loaded],
|
|
save:(commitSave:(...args:Sized)=>Sized, internal:Loaded) => Sized
|
|
}) => {
|
|
list:Record<string, Loaded>,
|
|
load:()=>Promise<void>,
|
|
save:()=>Promise<void>
|
|
} |