JSON → Tipe TypeScript
Simpulkan antarmuka TypeScript dari sebuah contoh JSON secara instan
Tentang alat ini
Tempel contoh JSON — respons API, berkas konfigurasi — dan dapatkan antarmuka TypeScript yang disimpulkan darinya: objek bersarang menjadi tipe bersarang, larik memperoleh tipe elemen (dengan union bila isinya campur), dan kunci yang bukan pengenal sah dikutip dengan benar.
Tipe yang dihasilkan adalah titik awal, bukan kontrak: penyimpulan hanya melihat satu contoh, jadi bidang yang kebetulan bernilai null di contoh Anda akan bertipe null, dan bidang opsional yang tidak muncul sama sekali tak diketahuinya. Keluarannya sengaja polos — tanpa dekorator, tanpa validasi saat runtime — supaya bisa Anda tempel ke mana pun lalu dipoles.
Untuk bidang yang berbeda-beda antar-permintaan, jalankan contoh kedua lalu gabungkan secara manual, atau naik kelas ke perkakas berbasis skema (OpenAPI, zod) begitu bentuk datanya stabil. Untuk momen harian “saya cuma butuh tipe buat respons ini”, sekali tempel sudah cukup.
Pertanyaan yang sering diajukan
- Kenapa bidang saya yang bisa null malah bertipe null saja?
- Penyimpulan hanya melihat contoh yang Anda tempel. Kalau di sana bidangnya null, ya null itulah satu-satunya yang bisa ia ketahui. Ubah menjadi string | null (atau apa pun tipe sebenarnya) setelah pembuatan — atau tempel contoh yang bidangnya terisi.
- Bagaimana bidang opsional ditangani?
- Tidak terdeteksi — satu contoh tidak bisa membedakan “selalu ada” dari “kebetulan ada kali ini”. Bidang yang absen di contoh juga absen di tipe. Tandai sendiri sebagai opsional (name?:) di tempat Anda tahu API kadang tidak mengirimkannya.
- Larik bertipe campuran menghasilkan apa?
- Sebuah union: [1, "a"] disimpulkan menjadi (number | string)[]. Larik kosong disimpulkan sebagai unknown[] karena tidak ada elemen untuk diperiksa — ganti dengan tipe elemen yang sesungguhnya begitu Anda tahu.
- Sebaiknya pakai tipe hasil penyimpulan atau pustaka skema seperti zod?
- Antarmuka hasil penyimpulan hanya hidup saat kompilasi — ia tidak memvalidasi apa pun saat runtime. Untuk perkakas internal dan pengetikan cepat, itu sempurna; untuk masukan tak tepercaya saat runtime, definisikan skema zod/valibot lalu turunkan tipe statisnya dari sana.