Skip to content

createEnum ​

La fonction createEnum() crée un enum string immuable et typé. L’objet retourné expose chaque valeur comme clé, ainsi que has(), toTuple() et contract().

Exemple interactif ​

Syntaxe ​

typescript
type Enum<
	GenericInputs extends [string, ...string[]]
> = {
	[Prop in GenericInputs[number]]: Prop;
} & {
	toTuple(): GenericInputs;
	has(value: string): value is GenericInputs[number];
	contract<
		GenericContractValue extends GenericInputs[number]
	>(
		...args: ...
	): Enum<GenericInputs>;
};

function createEnum<
	GenericInput extends string,
	GenericInputs extends [GenericInput, ...GenericInput[]]
>(
	values: GenericInputs
): Enum<GenericInputs>;

type GetEnumValue<
	GenericEnum extends { toTuple(): [string, ...string[]] }
> = ReturnType<GenericEnum["toTuple"]>[number];

Paramètres ​

  • values : Tuple non vide de chaînes (les membres de l’enum).

Valeur de retour ​

Un objet enum immuable avec :

  • Les propriétés nommées (clé/valeur identiques).
  • toTuple() pour récupérer le tuple typé.
  • has(value) pour tester une valeur runtime avec type guard.
  • contract<...>() pour vérifier au niveau des types que l’enum correspond exactement à une union attendue.

Voir aussi ​

  • kind - Tags runtime/type

Diffusé sous licence MIT.