97 votes

Typographie: type d'union de chaîne littérale à partir de enum

Je voudrais obtenir une union littérale de chaîne à partir d'une énumération.

Pour cette énumération…

 enum Weekday {
    MONDAY = 'mon',
    TUESDAY = 'tue',
    WEDNESDAY = 'wed'
}

… J'aimerais avoir ceci:

 type WeekdayType = 'mon' | 'tue' | 'wed';

J'ai essayé typeof keyof Weekday mais cela a abouti à 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' . J'ai l'impression que la solution a peut-être à voir avec les types mappés, mais je n'arrive pas à comprendre.

Comment puis-je faire cela?

35voto

coyotte508 Points 968

Avec Typescript 4.1 , c'est possible!

 enum Weekday {
  MONDAY = 'mon',
  TUESDAY = 'tue',
  WEDNESDAY = 'wed'
}

type WeekdayType = `${Weekday}`;

Avertissement: cela ne fonctionne qu'avec les valeurs d'énumération de chaîne, pas les valeurs d'énumération de nombre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X