Quatuor 9: Allegro | Brièveté et simplicité

Lorsque j'ai créé la bibliothèque pour la validation des données quartet, j'ai pris les repères suivants:



Dans cet article, je montrerai comment la bibliothèque quartetcomprend ce que signifient les mots «court» et «simple» dans le contexte de l'approche de la validation.


Comment ça marche quartet?


Quand est-il nécessaire? Il est nécessaire lors de la validation des données est nécessaire.
Qu'est - ce que la validation? Vérifiez la conformité des données. Type le plus souvent.
Comment quartetcela aide-t-il? Il crée une fonction de validation basée sur une description déclarative des exigences - un schéma. La fonction de compilation vconvertit le circuit en une fonction de validation. En outre v, les schémas et méthodes préparés sont stockés à l' intérieur pour créer des schémas plus complexes. Voir la documentation pour plus de détails .


Comment ça fonctionne?


  1. Vous écrivez un schéma
  2. Vous le donnez à l'entrée de la fonction de compilation vpour obtenir la fonction de validation.
  3. La fonction de validation est prĂŞte Ă  l'emploi!

Faisons quatuor valider toutes les données sans forcer le cerveau en sept approches.


.



:


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