Verwenden Sie den Typoskripttyp im yup-Schema

Sep 24 2020

Kann ein Typoskripttyp für eine Yup-Validierung verwendet werden?

In yup können Sie:

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

In einer meiner Komponenten habe ich diesen Typ definiert:

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

Kann ich diese beiden kombinieren? Dh:

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

Antworten

1 Vencovsky Sep 24 2020 at 19:09

Sie können die yup.mixed<TYPE>()Übergabe Ihres generischen Typs verwenden.

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

Sie übergeben es als yup.string(), aber es ist keine Zeichenfolge, sondern der Typ 'salami' | 'tuna' | 'cheese', der eine Zeichenfolge enthält, aber keine Zeichenfolge. Daher müssen Sie .mixedeinen bestimmten Wert definieren.

Wenn Sie das Array nicht direkt mit den Typwerten übergeben möchten, können Sie sich diese Frage ansehen, wie es erstellt wird.