01Konwertuj JSON Schema do TypeScript bez wychodzenia z przeglądarki
JSON Schema to TypeScript Playground to privacy-first konwerter shape schematu do deklaracji TypeScript. Wklej schema, wybierz nazwę typu root, a potem sprawdź interfaces, type aliases, local $defs references, enum unions i additionalProperties output. Publiczna trasa nie pobiera remote refs, nie czyta plików, nie wykonuje CLI i nie uruchamia dowolnego JavaScriptu.
02Co wspiera MVP
MVP wspiera konstrukcje, które są najważniejsze w review kontraktu: object properties, required fields, arrays, enum, const, oneOf i anyOf unions, allOf intersections, local #/$defs i #/definitions references, additionalProperties oraz komentarze z description. Niewspierane semantyki walidacyjne są pokazywane jako diagnostyka, zamiast udawać pełne pokrycie draftów.
03Dlaczego deklaracje typów potrzebują jawnego review
Kontrakty schema i typy aplikacyjne często dryfują w różnych repozytoriach. Backend może mieć JSON Schema, fragment OpenAPI albo wygenerowany artefakt, a frontend potrzebuje deklaracji TypeScript zrozumiałej w review. Ten playground pokazuje tłumaczenie jawnie: optionality, literal unions, granice nested object, index signatures i referenced definitions są zwykłym tekstem. Łatwiej wtedy wychwycić przypadkowe any, brak required field, remote ref niedostępny produkcyjnie albo keyword wymagający runtime validation.
Deklaracja wygenerowana z publicznego narzędzia powinna być traktowana jak szkic rozmowy, nie jak ostatni commit. Jeżeli zespół widzi w outputcie typ `unknown`, nadmiernie szeroki index signature albo union bez sensownego discriminanta, to jest sygnał do poprawy kontraktu, a nie do bezrefleksyjnego kopiowania. Właśnie dlatego diagnostyka jest obok kodu, a nie ukryta w konsoli.
04Praktyczny workflow handoffu kontraktu
Zacznij od presetu najbliższego kontraktowi, a potem wklej realny fragment schema. Nazwę typu root trzymaj blisko pojęcia aplikacyjnego, wygeneruj deklaracje i przeczytaj diagnostykę przed kopiowaniem. Jeśli pojawi się REMOTE_REF_BLOCKED, wklej referencję lokalnie albo dodaj $defs. Jeśli pojawi się UNSUPPORTED_KEYWORD, traktuj output TypeScript jako preview shape i zostaw Ajv albo inny validator w produkcyjnym path.
W praktyce taki handoff pomaga w kilku powtarzalnych sytuacjach. Przy integracji z nowym endpointem można szybko zobaczyć, czy response wrapper, pagination metadata i element kolekcji mają osobne nazwy typów, czy wszystko spłaszcza się do jednego dużego obiektu. Przy webhookach można sprawdzić, czy oneOf albo anyOf naprawdę tworzą czytelną unię, czy potrzebny jest ręczny discriminant. Przy fragmentach OpenAPI można upewnić się, że allOf nie ukrywa dodatkowego index signature, a additionalProperties nie zamienia całego obiektu w zbyt luźną mapę. Przy formularzach i konfiguracjach UI można ocenić, czy enumy są wystarczająco jawne dla design review i czy pola optional nie wyglądają jak przypadkowo pominięte required.
Dla zespołów pracujących w monorepo ważna jest także powtarzalność rozmowy. Ten playground nie zapisuje pasted schema, ale pozwala wkleić mały, kontrolowany fragment do review i od razu nazwać ryzyka. Developer może powiedzieć: deklaracja jest czytelna, ale pattern i format zostają w validatorze. Reviewer może powiedzieć: remote ref blokuje zaufanie, więc proszę o lokalny $defs. Product owner może zobaczyć, że TypeScript type nie potwierdza reguł biznesowych, tylko opisuje shape payloadu. Taka separacja redukuje koszt pomyłki, bo każdy wie, które decyzje należą do typu, które do walidacji runtime, a które do dokumentacji kontraktu.