• Produce a name that is unique among a set of siblings, appending a parenthesized counter (e.g. "Sword (2)") when baseName collides.

    Type Parameters

    • T extends { name: string }

      The sibling type, which must expose a name string.

    Parameters

    • baseName: string

      The desired name.

    • siblings: Map<string, T>

      Existing items whose name values are considered taken.

    Returns string

    A name not present among the siblings.

    Error if baseName is empty.