Quartett 9: Allegro | KĂŒrze und Einfachheit

Als ich die Bibliothek zur Datenvalidierung erstellt habe quartet, habe ich die folgenden Orientierungspunkte verwendet:



In diesem Artikel werde ich zeigen, wie die Bibliothek quartetversteht, 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 quartetdas? Es erstellt eine Validierungsfunktion basierend auf einer deklarativen Beschreibung der Anforderungen - einem Schema. Die Compilerfunktion vwandelt die Schaltung in eine Validierungsfunktion um. Außerdem vwerden vorbereitete Schemata und Methoden darin gespeichert, um komplexere Schemata zu erstellen. Weitere Informationen finden Sie in der Dokumentation .


Wie es funktioniert?


  1. Sie schreiben ein Schema
  2. Sie geben es an die Eingabe der Compilerfunktion weiter v, um die Validierungsfunktion abzurufen.
  3. 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> –   

, :


'string'v.string
'number'v.number
'boolean'v.boolean
'symbol'v.symbol

, :


const checkNumber = v(v.number);
//  , 
const checkNumber = (x) => typeof x === "number";

quartet


'function'v.function

:


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 //     8-      1   .

. 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 , .


, !


All Articles