FuncType - v0.60.3
    Preparing search index...

    Type Alias Widen<A, B>

    Widen: A extends B ? B : never

    The TypeScript equivalent of Scala's B >: A (B is a supertype of A).

    Resolves to B when A extends B (i.e., B is a legitimate supertype of A, or B = A). Resolves to never otherwise, which renders any callback position using Widen uncallable — the user gets a compile-time error rather than a runtime type lie.

    Type Parameters

    • A
    • B
    // Inside a container interface:
    reduce<B = A>(op: (b: Widen<A, B>, a: Widen<A, B>) => Widen<A, B>): Widen<A, B>

    // Callers:
    list.reduce((a, b) => a + b) // B defaults to A, Widen<A,A> = A, fine
    list.reduce<A | "extra">(...) // A extends A | "extra", Widen = B, fine
    list.reduce<UnrelatedType>(...) // A doesn't extend Unrelated, Widen = never, compile error