2017-06-18 4 views
1

Ich frage mich, wenn es möglich ist, ein Format zu beschreiben, das eine Schnittstelleneigenschaft haben sollte. Zum Beispiel:Wie bestimmte Format auf Eigenschaft

interface User { 
    age?: number, 
    name: string, 
    birthdate: string // should have format 'YYYY-MM-DD' 
} 

las ich über decorators aber es scheint nur auf Klassen gelten, nicht-Schnittstellen.

Ich baue eine API mit Node/Express und möchte Eingangsvalidierung haben. Also überlege ich Celebrate, die joi type Schema nehmen kann, um Eingabe zu validieren. Aber ich mag Typoskript verwenden, anstatt mein Schema/View-Modell zu definieren ... Wie Sie sehen, ich versuche, eine Schnittstelle zu verwenden, um festzulegen, wie die Eingabe eines bestimmten Endpunkts soll wie folgt aussehen:

  • Alter: Anzahl , optional
  • Name: string
  • Geburtsdatum: string im Format "YYYY-MM-DD"

Irgendwelche Hinweise und sehr geschätzt helfen :)

+0

[Regex-validierte Zeichenfolge Typen sind noch in der Diskussion.] (Https://github.com/Microsoft/TypeScript/issues/6579) – Saravana

+0

Danke, lass uns hoffen, dass es dann zur Sprache hinzugefügt wird – olefrank

Antwort

0

Alle h Ints und Hilfe sehr geschätzt :)

In erster Linie: Sie müssen Code für die Validierung schreiben. Es wird nicht magisch passieren.

zwei Ansätze:

Out-of-Band-Validierung

Sie verwenden validate(obj) => {errors?}. Sie erstellen eine Validierungsfunktion, die Objekte übernimmt und anzeigt und Ihnen eventuelle Fehler mitteilt. Sie können eine solche Funktion ganz einfach selber schreiben.

In Band Validierung

Statt {birthdate:string} Sie haben so etwas wie {birthdate:FieldState<string>} wo FieldState Validierungen und Fehler für ein bestimmtes Feld hält. Dies ist der Ansatz von https://formstate.github.io/#/, aber Sie können leicht selbst etwas ähnliches erstellen.

Ein Hinweis auf Validatoren

I Validatoren so einfach (value) => error? (Wert optional Fehler) wie als sie Rahmen Agnostiker und verwendet/wiederverwendet Tod sein kann. Dies ist der von formstate verwendete Validator. Natürlich ist dies nur meine Meinung und Sie können experimentieren mit was Ihre Bedürfnisse

Verwandte Themen