20 lines
458 B
TypeScript
20 lines
458 B
TypeScript
|
|
const check =<T extends object | null, Ret, Args extends [...string[], T]>(settings:{load:(...args:Args)=>Ret, save:(internal:Ret)=>Args})=>
|
|
{
|
|
return {} as [never, ...Args][Args["length"]];
|
|
}
|
|
|
|
function load(a1:string, a2:string, a3:string, a4:Record<string, number>)
|
|
{
|
|
return [1, 2, 3]
|
|
}
|
|
|
|
type LoadArgs = Parameters<typeof load>;
|
|
|
|
function save(n:number[])
|
|
{
|
|
return ["a", "b", "c", { x: 1, y: 2 }] as LoadArgs
|
|
}
|
|
|
|
const c1 = check({load, save});
|