UTILS.
Privat sejak awal
📘

JSON Schema ke TypeScript

Kompilasi JSON Schema (draft-07 atau 2020-12) menjadi interface dan alias tipe TypeScript, menangani required, enum, $ref, array, dan kombinator.

File tetap di perangkat ini

File diproses di browser, tidak pernah diunggah. Situs mengunduh kode dan aset yang diperlukan alat. Tanpa akun atau pelacak.

Gunakan Unduh untuk menyimpan alat ini sebagai satu file HTML untuk penggunaan offline.

Privasi →
keluaran

Tentang alat ini

Alat JSON Schema ke TypeScript mengompilasi dokumen JSON Schema menjadi interface dan alias tipe TypeScript, melakukan apa yang dilakukan pustaka populer json-schema-to-typescript tanpa memasang toolchain. Berbeda dengan konverter contoh-JSON, yang ini membaca skema sungguhan: ia menelusuri objek skema dan mengubah type:'object' menjadi interface di mana kunci yang tercantum dalam required bersifat non-opsional dan sisanya ditandai dengan ?.

Semuanya di-parsing dan dihasilkan secara lokal di browser Anda dengan JSON.parse dan JavaScript biasa, sehingga skema Anda tidak pernah meninggalkan halaman. Skema string dengan enum menjadi union dari literal string; string, number/integer, boolean, dan null biasa dipetakan ke padanan TypeScript-nya; array menjadi T[] (tuple ketika items adalah array). Kombinator didukung — allOf menjadi intersection (A & B) dan anyOf / oneOf menjadi union (A | B) — dan tipe nullable type:[T,'null'] menjadi T | null.

Referensi diselesaikan berdasarkan nama: $ref yang menunjuk ke #/definitions/X atau #/$defs/X menghasilkan referensi tipe bernama, dan setiap definisi dihasilkan sebagai export interface atau export type-nya sendiri. additionalProperties menambahkan signature indeks [key: string]: T. Nama tipe root jatuh ke title atau $id skema. Alihkan output interface-vs-type dan apakah string description skema menjadi komentar JSDoc /** */. Salin hasilnya atau unduh berkas .ts.

Pertanyaan yang sering diajukan

Fitur JSON Schema mana yang didukung?
object dengan properties dan required, enum string sebagai union literal, number/integer/boolean/null, array (termasuk tuple), kombinator allOf/anyOf/oneOf, $ref ke definitions atau $defs, additionalProperties sebagai signature indeks, dan array tipe nullable seperti ["string","null"].
Bagaimana $ref dan definitions ditangani?
Sebuah $ref seperti #/definitions/Address (atau #/$defs/Address) menjadi referensi ke tipe bernama Address, dan setiap entri di bawah definitions atau $defs dihasilkan sebagai export interface atau export type-nya sendiri, sehingga referensi terselesaikan di dalam output.
Apa yang menamai tipe root?
Kotak nama-root jika Anda mengaturnya, jika tidak title skema, jika tidak segmen terakhir dari $id-nya, jika tidak Root. Nama definisi berasal dari kuncinya di definitions atau $defs, dikonversi ke PascalCase.
Bisakah saya mempertahankan deskripsi skema?
Ya. Dengan JSDoc aktif (default), string description apa pun pada skema atau properti dihasilkan sebagai komentar /** ... */ di atas tipe atau field yang sesuai, mempertahankan dokumentasi dalam TypeScript yang dihasilkan.

Alat lainnya