Utiliser le type dactylographié dans le schéma yup

Sep 24 2020

Un type dactylographié peut-il être utilisé dans une validation yup?

En yup, vous pouvez:

yup.string().oneOf(['salami', 'tuna', 'cheese']);

Dans l'un de mes composants, j'ai défini ce type:

type toppings = 'salami' | 'tuna' | 'cheese';

Puis-je combiner ces deux? C'est à dire:

type toppings = 'salami' | 'tuna' | 'cheese';
yup.string().oneOf(toppings); // <- how?

Réponses

1 Vencovsky Sep 24 2020 at 19:09

Vous pouvez utiliser en yup.mixed<TYPE>()passant votre type générique.

yup.mixed<toppings>().oneOf(['salami', 'tuna', 'cheese']);

Vous le transmettez comme yup.string(), mais ce n'est pas une chaîne, c'est le type de 'salami' | 'tuna' | 'cheese', qui contient une chaîne mais pas une chaîne, vous devez donc l'utiliser .mixedpour définir une valeur spécifique.

Si vous ne voulez pas passer directement le tableau avec les valeurs de type, vous pouvez jeter un oeil à cette question sur la façon de le faire.