Jenis Nilai JSON
Tentukan jenis nilai JSON yang lengkap dan selamat dari segi jenis.
Jenis Nilai JSON ialah pelajaran TypeScript Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran TypeScript Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus TypeScript Academy merangkumi sejumlah 4 pelajaran.
Apakah Nilai JSON?
JSON membenarkan set bentuk nilai yang tetap: rentetan, nombor, nilai benar atau palsu, nilai kosong, tatasusunan dan objek. Jenis rekursif dapat menerangkan set itu dengan tepat.
type Json =
| string
| number
| boolean
| null
| Json[]
| { [k: string]: Json };
// arrays and objects nest Json again.Jenis JSON Rekursif
Wawasan utama: tatasusunan mengandungi Json dan nilai objek ialah Json, jadi jenis itu merujuk kepada dirinya sendiri untuk data bersarang.
type Json =
| string | number | boolean | null
| Json[]
| { [k: string]: Json };
const x: Json = { name: "Ada", tags: ["a", "b"], active: true };
console.log(x);Nilai JSON Primitif
Nilai JSON yang paling ringkas ialah nilai primitif. Setiap satunya boleh diberikan terus kepada Json.
type Json = string | number | boolean | null | Json[] | { [k: string]: Json };
const a: Json = "hello";
const b: Json = 42;
const c: Json = true;
const d: Json = null;
console.log(a, b, c, d);Tatasusunan JSON
Tatasusunan JSON ialah Json[], jadi tatasusunan ini boleh mengandungi campuran apa-apa nilai JSON, termasuk tatasusunan dan objek bersarang.
type Json = string | number | boolean | null | Json[] | { [k: string]: Json };
const arr: Json = [1, "two", true, null, [3, 4]];
console.log(Array.isArray(arr));Objek JSON
Objek JSON memetakan kunci rentetan kepada nilai Json melalui tandatangan indeks, lalu membenarkan penyusunan bersarang yang sewenang-wenangnya.
type Json = string | number | boolean | null | Json[] | { [k: string]: Json };
const obj: Json = {
user: { name: "Ada", age: 36 },
scores: [10, 20, 30]
};
console.log(obj);JSON yang Bersarang Mendalam
Oleh sebab jenis itu rekursif, struktur bersarang mendalam ditaip sepenuhnya tanpa sebarang pengisytiharan tambahan.
type Json = string | number | boolean | null | Json[] | { [k: string]: Json };
const deep: Json = {
a: { b: { c: [1, { d: true }] } }
};
console.log(deep);Perkara yang Tidak Termasuk dalam JSON
Jenis Json menolak dengan betul nilai yang tidak dapat diwakili oleh JSON, seperti undefined, fungsi atau objek Date.
type Json = string | number | boolean | null | Json[] | { [k: string]: Json };
// const bad: Json = undefined; // Error
// const fn: Json = () => 1; // Error
const good: Json = { ok: true };
console.log(good);Mengesahkan Bentuk JSON pada Masa Jalan
Jenis itu menerangkan JSON yang sah, tetapi Anda masih perlu mengesahkan masukan yang tidak dipercayai pada masa jalan. Pengawal rekursif memeriksa setiap aras.
type Json = string | number | boolean | null | Json[] | { [k: string]: Json };
function isJson(v: unknown): v is Json {
if (v === null) return true;
const t = typeof v;
if (t === "string" || t === "number" || t === "boolean") return true;
if (Array.isArray(v)) return v.every(isJson);
if (t === "object") return Object.values(v as object).every(isJson);
return false;
}
console.log(isJson({ a: [1, 2], b: "x" }));Menghurai kepada Jenis Json
JSON.parse mengembalikan any, jadi tukarkan hasil yang dihurai kepada Json hanya selepas pengesahan, atau taipkan pemboleh ubah itu dan sahkannya.
type Json = string | number | boolean | null | Json[] | { [k: string]: Json };
const raw = "{ \"id\": 1, \"tags\": [\"a\"] }";
const parsed = JSON.parse(raw) as Json;
console.log(parsed);Menelusuri Nilai Json
Penelusur rekursif boleh merentasi apa-apa nilai JSON dengan mengendalikan primitif, tatasusunan dan objek berdasarkan bentuk masa jalannya.
type Json = string | number | boolean | null | Json[] | { [k: string]: Json };
function countLeaves(v: Json): number {
if (Array.isArray(v)) return v.reduce((a, x) => a + countLeaves(x), 0);
if (v !== null && typeof v === "object") return Object.values(v).reduce((a, x) => a + countLeaves(x), 0);
return 1;
}
console.log(countLeaves({ a: [1, 2], b: "x" }));Sebab Jenis Json Berguna
Jenis Json yang tepat mendokumenkan perkara yang boleh merentasi sempadan API Anda, serta mengesan percubaan untuk menyiri nilai bukan JSON semasa kompilasi.
type Json = string | number | boolean | null | Json[] | { [k: string]: Json };
function send(payload: Json): string {
return JSON.stringify(payload);
}
console.log(send({ ok: true, items: [1, 2, 3] }));Semakan Pantas: Jenis Nilai JSON
Uji pemahaman Anda tentang jenis nilai JSON.
Imbas Kembali: Jenis Nilai JSON
Anda mentakrifkan jenis Json rekursif yang merangkumi primitif, tatasusunan dan objek, mempelajari perkara yang tidak termasuk di dalamnya, serta mengesahkan masukan yang tidak dipercayai dengan pengawal jenis rekursif.
type Json = string | number | boolean | null | Json[] | { [k: string]: Json };
const data: Json = { id: 1, tags: ["a", "b"] };
console.log(JSON.stringify(data));Pelajari TypeScript dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 101
- Pelajaran
- 352
Soalan Lazim
Adakah pelajaran “Jenis Nilai JSON” percuma?
Ya — teks penuh “Jenis Nilai JSON” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus TypeScript Academy, tingkat taraf kepada CoddyKit PRO. Kursus TypeScript Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Jenis Nilai JSON”?
Tentukan jenis nilai JSON yang lengkap dan selamat dari segi jenis. Anda berlatih TypeScript Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan TypeScript Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran TypeScript Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Jenis Nilai JSON” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran TypeScript Academy ini?
Ya. Setiap pelajaran TypeScript Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.