TypeScript'da generic'lar nima?
MiddleTypeScript #typescript #generics
Savol
TypeScript'da generic'lar nima uchun kerak va ulardan qanday foydalanish kerak?
Qisqa javob
Generic'lar tip xavfsizligini saqlagan holda turli xil ma'lumot tiplari bilan ishlaydigan funksiyalar, klasslar va tiplarni yozish imkonini beradi — any o'rniga biz kirish va chiqish tipi o'rtasidagi bog'liqlikka ega bo'lamiz.
Batafsil javob
Generic'larsiz har bir tip uchun kodni takrorlashga yoki tip tekshiruvini yo'qotib, any ishlatishga to'g'ri kelardi. Generic-parametr (odatda T) — chaqiruv vaqtida qo'yiladigan "tip o'zgaruvchisi".
function identity<T>(value: T): T {
return value
}
identity<string>('hello') // T = string
identity(42) // T avtomatik number sifatida chiqariladi
Generic'lar ko'pincha extends orqali cheklanadi:
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key]
}
Bu yerda K extends keyof T keyning T obyektining mavjud xususiyati ekanligini kafolatlaydi, TypeScript esa qaytariladigan qiymatning to'g'ri tipini chiqarib oladi.
Misol
interface ApiResponse<TData> {
data: TData
error: string | null
}
async function fetchJson<TData>(url: string): Promise<ApiResponse<TData>> {
const res = await fetch(url)
return { data: await res.json(), error: null }
}
interface User { id: number; name: string }
const { data } = await fetchJson<User>('/api/user/1')
data.name // TypeScript bu string ekanini biladi
Qo'shimcha savollar
- Generic'ni aniq tiplar to'plami bilan qanday cheklash mumkin?
- Standart generic'lar (
<T = string>) nima? - Generic'lar union tiplardan nimasi bilan farq qiladi?