JSON Değer Türleri
Eksiksiz ve tür güvenli bir JSON değer türü tanımlayın.
JSON Değer Türleri, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, TypeScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. TypeScript Academy kursu toplamda 4 dersten oluşur.
JSON Değeri Nedir?
JSON, sabit bir değer biçimleri kümesine izin verir: dizeler, sayılar, boole'lar, null, diziler ve nesneler. Özyinelemeli bir tür tam olarak bu kümeyi açıklayabilir.
type Json =
| string
| number
| boolean
| null
| Json[]
| { [k: string]: Json };
// arrays and objects nest Json again.Özyinelemeli JSON Türü
Temel fikir şudur: diziler Json içerir ve nesne değerleri Json türündedir; bu nedenle tür, iç içe veriler için kendisine başvurur.
type Json =
| string | number | boolean | null
| Json[]
| { [k: string]: Json };
const x: Json = { name: "Ada", tags: ["a", "b"], active: true };
console.log(x);Temel JSON Değerleri
En basit JSON değerleri ilkellerdir. Bunların her biri doğrudan Json türüne atanabilir.
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);JSON Dizileri
JSON dizisi Json[] türündedir; bu nedenle iç içe diziler ve nesneler de dahil olmak üzere her türden JSON değerinin bir karışımını tutabilir.
type Json = string | number | boolean | null | Json[] | { [k: string]: Json };
const arr: Json = [1, "two", true, null, [3, 4]];
console.log(Array.isArray(arr));JSON Nesneleri
JSON nesnesi, dizin imzası aracılığıyla dize anahtarlarını Json değerleriyle eşler ve rastgele derinlikte iç içe yapıya izin verir.
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);Derin İç İçe JSON
Tür özyinelemeli olduğundan, derin iç içe yapılar ek bildirim gerektirmeden tam olarak türlendirilir.
type Json = string | number | boolean | null | Json[] | { [k: string]: Json };
const deep: Json = {
a: { b: { c: [1, { d: true }] } }
};
console.log(deep);JSON'un İçermedikleri
Json türü, JSON'un temsil edemediği undefined, işlevler veya Date nesneleri gibi değerleri doğru şekilde reddeder.
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);JSON Biçimlerini Çalışma Zamanında Doğrulama
Tür, geçerli JSON'u açıklar; ancak güvenilmeyen girdileri çalışma zamanında yine de doğrulamanız gerekir. Özyinelemeli bir koruyucu her düzeyi denetler.
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" }));Bir Json Türüne Ayrıştırma
JSON.parse, any döndürür; bu nedenle ayrıştırılmış sonucu yalnızca doğruladıktan sonra Json türüne dönüştürün veya değişkeni türlendirip doğrulayın.
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);Bir Json Değeri Üzerinde Gezinme
Özyinelemeli bir gezgin, çalışma zamanındaki biçimi denetleyerek ilkelleri, dizileri ve nesneleri işleyip herhangi bir JSON değerinde gezinebilir.
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" }));Json Türü Neden Kullanışlıdır?
Kesin bir Json türü, API sınırınızdan tam olarak nelerin geçebileceğini belgeler ve JSON olmayan değerleri serileştirme girişimlerini derleme zamanında yakalar.
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] }));Hızlı Kontrol: JSON Değer Türleri
JSON değer türleri konusundaki anlayışınızı sınayın.
Özet: JSON Değer Türleri
İlkelleri, dizileri ve nesneleri kapsayan özyinelemeli bir Json türü tanımladınız, bu türün neleri dışladığını öğrendiniz ve güvenilmeyen girdileri özyinelemeli bir tür koruyucusuyla doğruladınız.
type Json = string | number | boolean | null | Json[] | { [k: string]: Json };
const data: Json = { id: 1, tags: ["a", "b"] };
console.log(JSON.stringify(data));Sıkça Sorulan Sorular
“JSON Değer Türleri” dersi ücretsiz mi?
Evet — “JSON Değer Türleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve TypeScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. TypeScript Academy kursu toplamda 4 dersten oluşur.
“JSON Değer Türleri” dersinde ne öğreneceğim?
Eksiksiz ve tür güvenli bir JSON değer türü tanımlayın. TypeScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
TypeScript Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te TypeScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“JSON Değer Türleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu TypeScript Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her TypeScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Özyinelemeli Tür Tanımları
- Ağaç Yapılarının Türünü Belirleme
- JSON Değer Türleri
- Özyineleme Derinliği ve Sınırları