UTILS.
100% di peramban
📘

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.

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