Przejdź do treści
100% lokalnie

Typ TypeScript na JSON Schema

Konwertuj interfejs lub alias typu TypeScript na JSON Schema.

Wejście
Wynik

Typ TypeScript na JSON Schema

Wklej interfejs lub alias typu TypeScript a to narzędzie wygeneruje równoważny JSON Schema, gotowy do walidacji ładunków API, plików konfiguracyjnych lub innych danych JSON, które powinny odpowiadać twoim definicjom typów. Jest budowane dla programistów, którzy już opisują kształty swoich danych w TypeScript i chcą schemat bez ręcznego pisania lub zaangażowania kroku budowy.

Wybierz między JSON Schema draft-07 a nowszym dialektem 2020-12, ponieważ walidatory i narzędzia wciąż różnią się tym, których się spodziewają. Unia łańcuchów jak 'active' | 'inactive' może renderować się jako enum lub jako anyOf wartości const, a możesz wymagać od obiektów odrzucenia nieznanych właściwości, konwersji komentarzy dokumentacji na pola opisu lub wyodrębnienia nazwanych interfejsów do bloku $defs (lub definitions) przywoływanego przez $ref zamiast osadzania ich wszędzie, gdzie się używają.

Tablice, krotki, Record i Map typy oraz unii zawierające null są obsługiwane w taki sposób, jak naprawdę je używa TypeScript — pole dopuszczające null staje się tablicą typów lub gałęzią anyOf, a nie cichym pominięciem. Konstrukcje bez ekwiwalentu w JSON Schema, takie jak metody, typy funkcji lub nierozwiązane parametry generyczne, są konwertowane tak permisywnie, jak to możliwe, i wymieniane jako ostrzeżenia pod wynikiem, aby nic nie zawiodło w ciszy.

Wszystko działa lokalnie w przeglądarce; twoje definicje typów i wygenerowany JSON Schema nigdy nie są nigdzie przesyłane. Skopiuj wynik, pobierz go jako plik .txt lub wyślij go bezpośrednio do wejścia innego narzędzia, aby kontynuować pracę.

Częste pytania

Które części TypeScript może konwertować?
Interfejsy, aliasy typów, zagnieżdżone literały obiektów, tablice, krotki, Record/Map/Set, Date, Partial/Required/Pick/Omit i unii zawierające unię łańcuchów i null. Konstrukcje bez ekwiwalentu w JSON Schema, takie jak metody i typy funkcji, są pomijane i wymieniane jako ostrzeżenia.
Jaka jest różnica między draft-07 a 2020-12?
Oba są dialektami JSON Schema. 2020-12 jest bieżący i używa $defs oraz prefixItems dla krotek, podczas gdy draft-07 używa definitions i tablicy items. Wybierz ten, który oczekuje twój walidator.
Co się stanie z właściwościami oznaczonymi znakiem '?'?
Są pominięte z pola required w schemacie, więc wygenerowany schemat odpowiada własnej idezie TypeScript o tym, które pola są opcjonalne.
Dlaczego niektóre pola kończą się jako pusta schéma {}?
Dzieje się to w przypadku konstrukcji, które JSON Schema nie może wyrazić, takich jak parametr typu ogólnego lub typ, którego narzędzie nie mogło rozwiązać. Poniżej wyniku dodawane jest ostrzeżenie wyjaśniające dokładnie, które pole i dlaczego.
Czy mój kod TypeScript jest przesyłany gdziekolwiek?
Nie. Konwersja odbywa się całkowicie w twojej przeglądarce — twoje definicje typów i wygenerowany schemat nigdy nie opuszczają twoje urządzenie.