Product
Other
Signature
declare function struct<F extends TypeLambda>(
F: Product<F>,
): <
R extends {
[x: string]: Kind<F, any, any, any, any>;
},
>(
fields: R,
) => Kind<
F,
[R[keyof R]] extends [Kind<F, R, any, any, any>] ? R : never,
R[keyof R] extends never ? never : [R[keyof R]] extends [Kind<F, any, O, any, any>] ? O : never,
R[keyof R] extends never ? never : [R[keyof R]] extends [Kind<F, any, any, E, any>] ? E : never,
{ [K in string | number | symbol]: [R[K]] extends [Kind<F, any, any, any, A>] ? A : never }
>;Signature
declare function tuple<F extends TypeLambda>(F: Product<F>): <T extends readonly Array<Kind<F, any, any, any, any>>>(...elements: T) => Kind<F, [T[number]] extends [Kind<F, R, any, any, any>] ? R : never, T[number] extends never ? never : [T[number]] extends [Kind<F, any, O, any, any>] ? O : never, T[number] extends never ? never : [T[number]] extends [Kind<F, any, any, E, any>] ? E : never, { [I in string | number | symbol]: [T[I]] extends [Kind<F, any, any, any, A>] ? A : never }>