Tipe TypeScript dari JSON

Contoh JSON ke interface TypeScript, Zod, JSON Schema, struct Go atau Python.

These options apply to TypeScript.

Output

4 named types · 28 lines

Apa yang dilakukan

Tempel contoh JSON, misalnya respons yang disalin dari panel Network browser, dan lihat tipe yang tersirat dalam lima format: TypeScript (interface atau type), Zod dengan z.infer, JSON Schema 2020-12, struct Go dengan tag json, dan dataclass Python. Semua diproses di browser Anda dengan parser ketat yang sama seperti pemformat JSON, yang menunjukkan baris dan kolom setiap kesalahan.

Cara tipe disimpulkan

Objek menjadi tipe bernama dari kuncinya (items → Item, bentuk tunggal untuk elemen array). Elemen array digabung menjadi satu tipe: field yang tidak ada di sebagian elemen menjadi opsional, dan jenis berbeda menjadi union, jadi [1, "a", null] adalah (string | number | null)[]. Array kosong menjadi unknown[] dan objek kosong Record<string, unknown>. Bilangan bulat dan desimal sama-sama number di TypeScript, tetapi int64/float64 di Go dan int/float di Python. Kunci yang bukan identifier ditulis dalam tanda kutip.

Batasan

Satu contoh hanya mewakili satu respons. Status adalah string, bukan union nilai yang diizinkan; tanggal adalah teks. Tempel beberapa rekaman dalam satu array untuk menggabungkannya, lalu rapikan hasilnya secara manual. Untuk data dari jaringan, skema Zod memvalidasinya saat program berjalan.

Pertanyaan yang sering diajukan

Mengapa sebuah field bertipe null, bukan string | null?

Karena di semua contoh nilainya null. Tambahkan rekaman yang berisi nilai di array yang sama, maka keduanya digabung menjadi string | null.

Apakah JSON saya diunggah?

Tidak. Penguraian dan pembuatan kode berjalan di browser Anda.

Mengapa kunci date menjadi DateType?

Interface bernama Date akan bergabung dengan tipe Date bawaan. Nama bawaan diberi akhiran Type untuk mencegahnya.