Interface ComposeTypeLambda<F, G, R1, O1, E1, R2, O2, E2>

Create a higher-kinded type that nests a pair of given higher-kinded types. Nests the given type lambdas with the first as the outer layer, and the the second as the inner one. The kind of a nested type lambda is the nesting of the kinds of the given type lambdas. For example:

// A type lambda for the higher-kinded type `Option<ReadonlyArray>`:
export type OptionArrayLambda = NestTypeLambda<
OptionTypeLambda,
ReadonlyArrayTypeLambda
>
// Applying the new type lambda to the type `number`:
export type NumericOptionArray = Kind<
OptionArrayLambda,
never,
unknown,
unknown,
number
>
// NumericOptionArray ≡ Option<ReadonlyArray<number>>
interface ComposeTypeLambda<F, G, R1, O1, E1, R2, O2, E2> {
    In: unknown;
    Out1: unknown;
    Out2: unknown;
    Target: unknown;
    type: Kind<F, R1, O1, E1, Kind<G, R2, O2, E2, unknown>>;
}

Type Parameters

  • F extends TypeLambda
  • G extends TypeLambda
  • R1 = unknown
  • O1 = never
  • E1 = never
  • R2 = R1
  • O2 = O1
  • E2 = E1

Hierarchy

  • TypeLambda
    • ComposeTypeLambda

Properties

Properties

In: unknown
Out1: unknown
Out2: unknown
Target: unknown
type: Kind<F, R1, O1, E1, Kind<G, R2, O2, E2, unknown>>