0Pricing
TypeScript Academy · Pelajaran

Jenis Nilai JSON

Definisikan jenis nilai JSON yang lengkap dan aman secara jenis.

Jenis Nilai JSON adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar TypeScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus TypeScript Academy mencakup 4 pelajaran total.

Apa Itu Nilai JSON?

JSON mengizinkan sekumpulan bentuk nilai yang tetap: teks, angka, nilai benar atau salah, null, larik, dan objek. Tipe rekursif dapat menjelaskan kumpulan tersebut secara tepat.

type Json =
  | string
  | number
  | boolean
  | null
  | Json[]
  | { [k: string]: Json };
// arrays and objects nest Json again.

Tipe JSON Rekursif

Gagasan utamanya: larik berisi Json dan nilai objek adalah Json, sehingga tipe tersebut merujuk pada dirinya sendiri untuk data bertingkat.

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 sederhana adalah nilai primitif. Masing-masing dapat langsung ditetapkan ke 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);

Larik JSON

Larik JSON adalah Json[], sehingga dapat menampung campuran nilai JSON apa pun, termasuk larik dan objek bertingkat.

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 teks ke nilai Json melalui tanda tangan indeks, sehingga memungkinkan penyarangan tanpa batas.

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 Sangat Bertingkat

Karena tipenya rekursif, struktur yang sangat bertingkat tetap sepenuhnya diketik tanpa deklarasi tambahan.

type Json = string | number | boolean | null | Json[] | { [k: string]: Json };
const deep: Json = {
  a: { b: { c: [1, { d: true }] } }
};
console.log(deep);

Hal yang Tidak Dicakup JSON

Tipe Json dengan tepat menolak nilai yang tidak dapat direpresentasikan 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);

Memvalidasi Bentuk JSON Saat Berjalan

Tipe tersebut menjelaskan JSON yang valid, tetapi Anda tetap harus memvalidasi masukan yang tidak tepercaya saat program berjalan. Penjaga rekursif memeriksa setiap tingkat.

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" }));

Mengurai Menjadi Tipe JSON

JSON.parse mengembalikan any, jadi konversikan hasil yang telah diurai menjadi Json hanya setelah memvalidasinya, atau ketik variabel tersebut lalu validasikan.

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 dapat menelusuri nilai JSON apa pun dengan menangani nilai primitif, larik, dan objek berdasarkan bentuknya saat program berjalan.

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" }));

Mengapa Tipe JSON Berguna

Tipe Json yang tepat mendokumentasikan apa saja yang boleh melewati batas API Anda, serta mendeteksi upaya menserialkan nilai non-JSON pada waktu 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] }));

Pemeriksaan Singkat: Tipe Nilai JSON

Uji pemahaman Anda tentang tipe nilai JSON.

Ringkasan: Tipe Nilai JSON

Anda mendefinisikan tipe rekursif Json yang mencakup nilai primitif, larik, dan objek, mempelajari hal-hal yang tidak dicakupnya, serta memvalidasi masukan yang tidak tepercaya dengan penjaga tipe rekursif.

type Json = string | number | boolean | null | Json[] | { [k: string]: Json };
const data: Json = { id: 1, tags: ["a", "b"] };
console.log(JSON.stringify(data));

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Jenis Nilai JSON” gratis?

Ya — teks lengkap “Jenis Nilai JSON” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus TypeScript Academy, upgrade ke CoddyKit PRO. Kursus TypeScript Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Jenis Nilai JSON”?

Definisikan jenis nilai JSON yang lengkap dan aman secara jenis. Kamu berlatih TypeScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai TypeScript Academy?

Tidak diperlukan pengalaman sebelumnya. TypeScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Jenis Nilai JSON” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran TypeScript Academy ini?

Ya. Setiap pelajaran TypeScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Definisi Jenis Rekursif
  2. Menentukan Jenis Struktur Pohon
  3. Jenis Nilai JSON
  4. Kedalaman dan Batas Rekursi
← Kembali ke TypeScript Academy