Type alias NoTupleDuplicates<T, Message>

NoTupleDuplicates<T, Message>: TupleDuplicates<T> extends never
    ? unknown
    : {
        readonly [K in StringifyPrimitive<TupleDuplicates<T>> as `${Message}: ${K}`]: never
    }

Enforces tuple element uniqueness at compile time. Resolves to unknown if the tuple contains no duplicates. If duplicates are found, it returns an object type containing custom error keys to trigger a TypeScript error.

Type Parameters

  • T extends readonly unknown[]

    The tuple type to validate for duplicate values.

  • Message extends string = "Duplicate tuple value"

    Prefix string used to construct readable compile-time error keys.

Example

type Valid = NoTupleDuplicates<['a', 'b', 'c']>;
// Result: unknown ✅

type Invalid = NoTupleDuplicates<['a', 'b', 'a']>;
// Result: { readonly 'Duplicate tuple value: a': never } ❌

type CustomError = NoTupleDuplicates<
['DATABASE_URL', 'DATABASE_URL'],
'Duplicate ignored env variable'
>;
// Result: { readonly 'Duplicate ignored env variable: DATABASE_URL': never } ❌

See

TupleDuplicates