Cara menggunakannya
- Tampal JSON ke dalam kotak input, buka fail .json, atau cuba contoh.
- Tetapkan nama jenis akar, contohnya Order atau ApiResponse.
- Pilih pengisytiharan interface atau type dan sama ada hendak menambah export dan readonly.
- Salin TypeScript yang dijana atau muat turun sebagai types.ts.
Cara ia berfungsi
Penjana meneliti keseluruhan dokumen JSON dan merekodkan jenis nilai yang ditemui di setiap tempat. Setiap objek JSON menjadi perisytiharan bernamanya sendiri. Nama diambil daripada kunci sifat yang ditulis dalam PascalCase, jadi “shipping_address” menjadi ShippingAddress. Item dalam tatasusunan dinamakan berdasarkan bentuk tunggal kunci: “items” menghasilkan Item, “categories” menghasilkan Category, dan kunci yang tidak kelihatan seperti jamak mendapat akhiran “Item”.
Semua objek di dalam satu tatasusunan digabungkan menjadi satu interface. Jika sesuatu kunci muncul hanya pada sebahagian objek, ia ditanda pilihan dengan “?”. Jika sesuatu nilai mempunyai jenis berbeza di tempat berbeza, jenisnya menjadi union seperti string | number. null dikekalkan sebagai jenisnya sendiri, jadi medan yang kadangkala null menjadi string | null. Tatasusunan kosong menjadi unknown[], kerana tiada apa yang boleh disimpulkan daripadanya. Dua objek dengan sifat dan jenis yang sama berkongsi satu interface dan bukannya menghasilkan pendua. Kunci yang bukan pengecam sah, seperti “first-name”, diletakkan dalam tanda petik.
Hasilnya hanya menerangkan sampel yang anda tampal. Medan yang sebenarnya pilihan atau boleh menjadi null akan diperlukan dan bukan null jika sampel anda tidak menunjukkannya, dan tarikh tiba sebagai rentetan biasa. Semak jenis-jenis ini dengan dokumentasi API anda sebelum bergantung padanya.
Contoh
Menentukan jenis respons API
Tampal satu pesanan daripada API kedai anda dengan nama akar Order. Anda akan mendapat interface Order, Customer, Item dan Shipping, dengan note?: string pada Item kerana hanya satu daripada dua item itu mempunyai nota.
Konfigurasi baca sahaja
Tampal config.json, tandakan “Jadikan sifat-sifat baca sahaja” dan tampal hasilnya ke dalam config.d.ts, supaya penulisan tidak sengaja pada config dapat dikesan oleh pengkompil.
Tatasusunan di peringkat atas
Titik akhir senarai memulangkan [{…}, {…}]. Dengan nama akar Product, output bermula dengan “export type Product = ProductItem[];” diikuti oleh interface ProductItem.
Soalan Lazim
Mengapa medan menjadi pilihan dalam output?
Kerana sekurang-kurangnya satu objek dalam tatasusunan yang sama tidak mempunyai kunci itu. Jika setiap objek memilikinya, medan itu wajib. Tampal beberapa rekod untuk mendapatkan medan pilihan yang lebih tepat.
Mengapa tarikh ditaip sebagai string?
JSON tidak mempunyai jenis tarikh, jadi tarikh dihantar sebagai string. Penjana tidak meneka format. Ubah jenis itu sendiri jika kod anda menukarkannya kepada objek Date.
Apakah perbezaan antara interface dan type?
Untuk bentuk objek, kedua-duanya berfungsi hampir sama. Interface boleh dilanjutkan dan digabungkan dengan pengisytiharan kemudian; alias type tidak boleh dibuka semula. Pilih gaya yang sudah digunakan dalam pangkalan kod anda.
Bolehkah ia menjana pengesahan masa jalan seperti skema Zod?
Tidak. Ia hanya menghasilkan pengisytiharan TypeScript, yang disemak pada masa kompilasi dan tidak mengesahkan data semasa runtime.
Privasi
JSON anda dianalisis hanya dalam pelayar anda. Tiada apa-apa yang dimuat naik, disimpan atau disertakan dalam analitik.