Typy Sarcastic z JSON — Numio
Generuje walidatory biblioteki sarcastic do sprawdzania typów podczas wykonywania na podstawie próbki JSON. Obiekty stają się is.shape({...}), tablice is.arrayOf(...), a klucze brakujące w części elementów tablicy są otaczane is.maybe(...).
Sprawdzanie kształtu pobranego JSON w czasie wykonywania w małym projekcie JavaScript bez biblioteki schematów.
JSON
Sarcastic
Kiedy go używać
- Sprawdzanie kształtu pobranego JSON w czasie wykonywania w małym projekcie JavaScript bez biblioteki schematów.
- Ochrona ładunków konfiguracyjnych lub komunikatów za pomocą asercji, które generują nieoczekiwane dane.
Jak używać
- Wklej obiekt JSON; aby oznaczyć pola jako opcjonalne, uwzględnij elementy tablicy z nimi i bez nich.
- Sprawdź wynik: struktura główna to RootInterface, a struktury zagnieżdżone otrzymują nazwy od swoich kluczy (posts staje się Posts).
- Skopiuj kod i zweryfikuj dane za pomocą is(data, RootInterface), która zwraca wartość lub zgłasza niezgodność.
Wejście JSON
{
"id": 1,
"name": "Ada",
"nickname": null,
"tags": ["math"],
"posts": [
{ "title": "Notes", "draft": true },
{ "title": "Engine" }
]
}Walidatory Sarcastic
import is from "sarcastic"
const anyValue = (value) => value
const Posts = is.shape({
title: is.string,
draft: is.maybe(is.boolean),
})
const RootInterface = is.shape({
id: is.number,
name: is.string,
nickname: is.maybe(anyValue),
tags: is.arrayOf(is.string),
posts: is.arrayOf(Posts),
})Szczegóły i ograniczenia
Generowanie odbywa się w przeglądarce przy użyciu własnego generatora witryny, który dodaje import is from "sarcastic" i formatuje wynik w Prettier; nie wysyła żądania do serwera.
sarcastic nie ma asercji "any", dlatego wartość będąca tylko null staje się is.maybe(anyValue), z użyciem małej funkcji pomocniczej const anyValue = (value) => value dodanej do wyniku.
Zarówno liczby całkowite, jak i dziesiętne to is.number. Puste tablice stają się is.array; tablice mieszane używają is.either, na przykład is.arrayOf(is.either(is.number, is.string)).
Kształty są deklarowane przed kształtami, które ich używają, więc kod działa po wklejeniu.
FAQ
Jak reprezentowane są pola opcjonalne?
Klucze brakujące w części obiektów tej samej tablicy lub mające null w części z nich są otaczane is.maybe(...), które akceptuje null i undefined. Klucze najwyższego poziomu pojedynczego obiektu są zawsze wymagane.
Co się dzieje z tablicą główną?
Elementy są łączone w jeden kształt RootInterface opisujący pojedynczy element, a dla całej tablicy dodawana jest const RootInterfaceList = is.arrayOf(RootInterface).
Czy sarcastic to to samo co io-ts lub Zod?
Nie. sarcastic to mniejsza biblioteka bez statycznego wnioskowania typów. Jeśli potrzebujesz również typów TypeScript, bardziej odpowiednie są narzędzia JSON do Zod lub JSON do io-ts.