Sarcastic-typen uit JSON — Numio
Genereert validators voor de sarcastische runtime-typecontrolebibliotheek op basis van een JSON-voorbeeld. Objecten worden is.shape({...}), arrays is.arrayOf(...) en sleutels die ontbreken in sommige array-items worden verpakt in is.maybe(...).
De vorm controleren van opgehaalde JSON tijdens runtime in een klein JavaScript-project zonder schemabibliotheek.
JSON
Sarcastic
Wanneer gebruik je dit?
- De vorm controleren van opgehaalde JSON tijdens runtime in een klein JavaScript-project zonder schemabibliotheek.
- Configuratie- of berichtladingen bewaken met beweringen die onverwachte gegevens opleveren.
Hoe werkt het
- Plak een JSON-object; Om velden als optioneel te markeren, neemt u array-items met en zonder op.
- Lees de uitvoer: de hoofdvorm is RootInterface, geneste vormen worden genoemd naar hun sleutels (posts worden Posts).
- Kopieer de code en valideer de gegevens met is(data, RootInterface), die de waarde retourneert of een mismatch genereert.
JSON-ingang
{
"id": 1,
"name": "Ada",
"nickname": null,
"tags": ["math"],
"posts": [
{ "title": "Notes", "draft": true },
{ "title": "Engine" }
]
}Sarcastic-validators
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),
})Details en beperkingen
Gegenereerd in de browser door de eigen generator van de site, waarbij import van "sarcastisch" is toegevoegd en Prettier-opmaak is toegepast; geen serververzoek.
sarcastisch heeft geen "enige" bewering, dus een waarde die alleen null is, wordt is.maybe(anyValue), met behulp van een kleine const anyValue = (waarde) => waardehelper toegevoegd aan de uitvoer.
Gehele getallen en decimalen zijn beide is.number. Lege arrays worden is.array; gemengde arrays gebruiken is.either, zoals is.arrayOf(is.either(is.number, is.string)).
Vormen worden gedeclareerd vóór de vormen die ze gebruiken, zodat de code wordt uitgevoerd zoals geplakt.
FAQ
Hoe worden optionele velden weergegeven?
Sleutels die ontbreken in sommige objecten in dezelfde array, of null in sommige ervan, worden verpakt in is.maybe(...), dat null en ongedefinieerd accepteert. Sleutels op het hoogste niveau van een enkel object zijn altijd vereist.
Wat gebeurt er met een rootarray?
De items worden samengevoegd in één RootInterface-vorm die één enkel element beschrijft, en const RootInterfaceList = is.arrayOf(RootInterface) wordt toegevoegd voor de hele array.
Is sarcastisch hetzelfde als io-ts of Zod?
Nee. Sarcastisch is een kleinere bibliotheek zonder statische type-inferentie. Als je ook TypeScript-typen nodig hebt, zijn de pagina's JSON naar Zod of JSON naar io-ts dichterbij.