Konwerter TypeScript do JSON
Wklej TypeScript interfaces albo typowane object literale. Dostań poprawny JSON z powrotem.
Co robi to narzędzie
Masz interface w TypeScripcie plus typowany literał obiektu, albo przypisanie typu const config: Config = {...}, i potrzebujesz tej wartości jako prawdziwego JSON-a — do requesta do API, fixture'a albo przykładu OpenAPI. Wklej tu cały blok. Narzędzie zdejmie adnotacje typów, rozwiąże literał i odda ci JSON, który parsuje się wszędzie.
Składnia wyłącznie typowa jest traktowana tak, jak kompilator TypeScripta traktuje ją przy emit: interfaces i type aliasy znikają, as const i satisfies nie zmieniają wyniku, Record<string, X> zostaje obiektem, a modyfikatory readonly i ? są ignorowane w JSON-ie (brakujące pola optional po prostu się nie pojawiają). Stringi są otaczane cudzysłowami tak samo, jak robi to JSON.stringify — podwójne cudzysłowy, escape'owane tam, gdzie trzeba — a klucze zawsze są stringami.
Enumy emitują swoją wartość runtime'ową. Enum numeryczny zostaje liczbą, string enum stringiem. Instancje Date wychodzą jako ISO-8601 zgodnie z RFC 8259. Właściwości undefined wypadają, null zostaje null-em. Spokojnie możesz wkleić kilka interfaces z ich instancjami za jednym zamachem — każda instancja ląduje jako top-level entry w JSON-ie.
Jak z tego korzystać
Trzy kroki. Działa dla interface'u na pięć linii albo dla całego modułu <code>types.ts</code>.
Wklej swój TypeScript (albo spróbuj przykładu)
Wrzuć go do edytora po lewej. Interface + typowany obiekt, type alias, definicje enuma albo eksportowane const — wszystko przejdzie. Kliknij Załaduj przykład, żeby zobaczyć, jak wygląda realistyczny input.
Zostaw składnię w stylu TypeScript handbooka tak, jak jest — nie musisz zdejmować generics, decoratorów ani import type. Przypomnienie, jak działa mapowanie JS-na-JSON, znajdziesz w referencji JSON na MDN.
Kliknij Konwertuj
Kliknij zielony przycisk Konwertuj. Narzędzie kasuje info o typach, ewaluuje wartości literalne i serializuje je tak samo jak JSON.stringify(obj, null, 2).
Skopiuj JSON
Prawy panel pokazuje ładnie sformatowany JSON, gotowy do wrzucenia w body requesta, w example OpenAPI albo w fixture'a testowego.
Kiedy to naprawdę ratuje życie
Przykłady requestów do API
Masz request DTO w Angularze, Next.js albo NestJS i potrzebujesz JSON-owego payloadu pod Swaggera, Postmana albo curla. Wklej interface + obiekt, dostaniesz JSON.
Fixture'y do testów jednostkowych
Zamień inline'owego typowanego mocka z testu Jesta albo Vitesta w osobny JSON-owy fixture dla MSW, Playwrighta albo runów integracyjnych.
Przykłady do OpenAPI i JSON Schema
Wklej interface <code>User</code> i przykładową instancję, żeby za jednym zamachem wygenerować blok <code>example</code> dla swojego schema <a href="https://swagger.io/specification/" target="_blank" rel="noopener">OpenAPI</a>.
Przerzucanie configu na JSON
Przesiadasz się z typowanego <code>config.ts</code> na JSON-owy config store? Wklej typowany const, dostań czysty JSON i wrzuć do nowego systemu configu.
Częste pytania
Czy zdejmuje adnotacje typów i generics?
Tak. Interfaces, type aliasy, parametry generyczne, casty as, satisfies i readonly są wyczyszczone tak samo, jak czyści je kompilator TypeScripta. W JSON-ie zostaje tylko wartość runtime'owa.
Jak obsługiwane są enumy?
Enumy numeryczne emitują liczbę, string enumy stringa. const enum jest traktowany tak samo jak zwykły enum na potrzeby konwersji. Referencje do enuma wewnątrz object literala rozwiązują się do ich zadeklarowanych wartości.
A co z polami optional i typami Record?
Pola optional (name?: string), których nie ma, po prostu nie pojawiają się w JSON-ie — identycznie jak domyślne zachowanie JSON.stringify. Record<string, X> zostaje obiektem JSON-owym kluczowanym przekazanymi stringowymi kluczami.
Mogę wkleić cały plik z typami?
Tak. Kilka interfaces, type aliasów, enumów i typowanych constów może siedzieć w jednym wklejeniu. Każda top-level typowana instancja staje się swoim własnym entry w JSON-ie, z zagnieżdżonymi typami rozwiniętymi w miejscu.
Jak traktowane są Date, null i undefined?
Wartości Date stają się stringami ISO-8601. null zostaje JSON-owym null. Właściwości undefined wypadają z obiektów. Tablice z elementami undefined dostają w tym slocie null — zgodnie z JSON.stringify.
Czy mój kod jest gdzieś zapisywany?
Kod leci do backendu tylko po to, żeby zostać skonwertowany. Nie jest logowany ani nigdzie nie ląduje. Jeśli wklejasz coś wrażliwego, rzuć wcześniej okiem.
Inne narzędzia, które mogą się przydać
TypeScript do JSON to tylko jeden element układanki. Te narzędzia dobrze się z nim komponują: