Als ich die Bibliothek zur Datenvalidierung erstellt habe quartet
, habe ich die folgenden Orientierungspunkte verwendet:
In diesem Artikel werde ich zeigen, wie die Bibliothek quartet
versteht, was die Wörter "Kurz" und "Einfach" im Kontext des Validierungsansatzes bedeuten.
Wie funktioniert das quartet
?
Wann wird es benötigt? Es wird benötigt, wenn eine Datenvalidierung erforderlich ist.
Was ist eine Validierung? ĂberprĂŒfen Sie die Daten auf KonformitĂ€t. Meistens Typen.
Wie hilft quartet
das? Es erstellt eine Validierungsfunktion basierend auf einer deklarativen Beschreibung der Anforderungen - einem Schema. Die Compilerfunktion v
wandelt die Schaltung in eine Validierungsfunktion um. AuĂerdem v
werden vorbereitete Schemata und Methoden darin gespeichert, um komplexere Schemata zu erstellen. Weitere Informationen finden Sie in der Dokumentation .
Wie es funktioniert?
- Sie schreiben ein Schema
- Sie geben es an die Eingabe der Compilerfunktion weiter
v
, um die Validierungsfunktion abzurufen. - Die Validierungsfunktion ist einsatzbereit!
Lassen Sie uns das Quartett alle Daten validieren, ohne das Gehirn in sieben AnsÀtzen zu belasten.
.
:
type Answer = 42;
quartet
:
const answerSchema = 42;
- :
import { v } from "quartet";
const checkAnswer = v(42);
. â .
, . â .
. , , .
const checkNumber = (x) => typeof x === "number";
const checkString = (x) => typeof x === "string";
const checkBoolean = (x) => typeof x === "boolean";
const checkSymbol = (x) => typeof x === "symbol";
:
const checkSomeType = x => typeof x === "<type>", <type> â
, :
, :
const checkNumber = v(v.number);
const checkNumber = (x) => typeof x === "number";
quartet
:
const checkFunction = v(v.function);
const checkFunction = (x) => typeof x === "function";
. C â v.
.
«»
:
type NullableString = string | null;
quartet
:
const nullableStringSchema = [v.string, null];
:
const checkNullableString = v([v.string, null]);
:
type VariantSchema = Schema[];
. â .
«»
type Password = string
. v.minLength()
v.test(RegExp)
const stringSchema = v.string;
const min8Schema = v.minLength(8);
const atLeastOneDigitSchema = v.test(/\d/);
const atLeastOneLetterSchema = v.test(/[A-Za-z]/);
v.and()
:
const passwordSchema = v.and(
stringSchema,
min8Schema,
atLeastOneDigitSchema,
atLeastOneLetterSchema,
)
. v.and(, , ...)
.
Person
:
interface Person {
name: string
age: number
}
, Person
?
, name
age
. string
number
. !
, , .
â !
:
const personSchema = {
name: v.string,
age: v.number,
};
:
interface ObjectInterfaceSchema {
[propertyName: string]: Schema;
}
. â , â , â .
:
type Numbers = number[];
v.arrayOf()
. .
const checkNumbers = v(v.arrayOf(v.number));
. v.arrayOf( )
.
quartet
.
. Ń v.custom( )
:
const evenSchema = v.custom((x) => x % 2 === 0)
const evenNumberSchema = v.and(
v.number,
evenSchema,
);
. v.custom( )
.
- â .
- C â
v.
. - â .
v.and(, , ...)
.- â , â , â .
v.arrayOf( )
.v.custom( )
.
P.S.
. quartet
:
. 4 , .
, !