@jiminp/tooltool
    Preparing search index...

    Type Alias OptionalIfVoid<T>

    OptionalIfVoid: [T] extends [undefined | void] ? [t?: T] : [T]

    Converts a type into a tuple whose element is optional when T is assignable to void | undefined.

    Designed for rest parameters. The check considers the whole type, so a union such as string | undefined still requires an argument.

    Type Parameters

    • T

      The type to evaluate for optionality.

    function dispatch<T>(action: string, ...payload: OptionalIfVoid<T>): void {
    // ...
    }

    dispatch<void>("reset"); // Payload omitted
    dispatch<number>("increment", 5); // Payload required
    dispatch<number>("increment"); // Error: missing argument