Kuartet 9: Allegro | Keringkasan dan kesederhanaan

Ketika saya membuat perpustakaan untuk validasi data quartet, saya mengambil tengara berikut:



Dalam artikel ini saya akan menunjukkan bagaimana perpustakaan quartetmemahami apa arti kata "Pendek" dan "Sederhana" dalam konteks pendekatan validasi.


Bagaimana cara kerjanya quartet?


Kapan dibutuhkan? Dibutuhkan saat validasi data diperlukan.
Apa itu validasi? Periksa data untuk kepatuhan. Paling sering mengetik.
Bagaimana quartetini membantu? Ini menciptakan fungsi validasi berdasarkan deskripsi deklaratif persyaratan - skema. Fungsi kompiler vmengubah sirkuit menjadi fungsi validasi. Juga v, skema dan metode yang disiapkan disimpan di dalam untuk membuat skema yang lebih kompleks. Lihat dokumentasi untuk lebih jelasnya .


Bagaimana itu bekerja?


  1. Anda menulis skema
  2. Anda memberikannya ke input fungsi kompiler vuntuk mendapatkan fungsi validasi.
  3. Fungsi validasi siap digunakan!

Mari kuartet memvalidasi semua data tanpa melelahkan otak dalam tujuh pendekatan.


.



:


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