TypeScript ko'plab foydali turlar bilan birga keladi, ular odatda utility turlari deb ataladi. Ushbu bobda eng mashhur utility turlari qamrab olingan.
Partial
obyektdagi barcha xususiyatlarni ixtiyoriy qilib o'zgartiradi.
Misol:
interface Point {
x : number ;
y : number ;
}
let pointPart : Partial < Point > = {}; // `Partial` x va y ni ixtiyoriy qiladi
pointPart.x = 10 ;
Required
obyektdagi barcha xususiyatlarni majburiy qilib o'zgartiradi.
Misol:
interface Car {
make : string ;
model : string ;
mileage ?: number ;
}
let myCar : Required < Car > = {
make: 'Ford' ,
model: 'Focus' ,
mileage: 12000 // `Required` mileage ni belgilangan bo'lishini ta'minlaydi
};
Record
ma'lum bir kalit turi va qiymat turi bilan obyekt turini aniqlash uchun qisqa yo'l.
Misol:
const nameAgeMap : Record < string , number > = {
'Alice' : 21 ,
'Bob' : 25
};
Record<string, number>
{ [key: string]: number }
bilan teng.
Omit
obyekt turidan kalitlarni olib tashlaydi.
Misol:
interface Person {
name : string ;
age : number ;
location ?: string ;
}
const bob : Omit < Person , 'age' | 'location' > = {
name: 'Bob'
// `Omit` age va location ni turdan olib tashlaydi, ular bu yerda aniqlanishi mumkin emas
};
Pick
obyekt turidan faqat ko'rsatilgan kalitlarni saqlaydi.
Misol:
interface Person {
name : string ;
age : number ;
location ?: string ;
}
const bob : Pick < Person , 'name' > = {
name: 'Bob'
// `Pick` faqat name ni saqlaydi, age va location turdan olib tashlanadi va bu yerda aniqlanishi mumkin emas
};
Exclude
birikkandagi turlardan ba'zilarini olib tashlaydi.
Misol:
type Primitive = string | number | boolean
const value : Exclude < Primitive , string > = true ; // string bu yerda ishlatilishi mumkin emas, chunki Exclude uni turdan olib tashlaydi.
ReturnType
funksiya turining qaytish turini chiqarib oladi.
Misol:
type PointGenerator = () => { x : number ; y : number ; };
const point : ReturnType < PointGenerator > = {
x: 10 ,
y: 20
};
Parameters
funksiya turining parametr turlarini massiv sifatida chiqarib oladi.
Misol:
type PointPrinter = ( p : { x : number ; y : number ; }) => void ;
const point : Parameters < PointPrinter >[ 0 ] = {
x: 10 ,
y: 20
};
Readonly
barcha xususiyatlar faqat o'qilishi mumkin bo'lgan yangi tur yaratish uchun ishlatiladi, ya'ni qiymat belgilanganidan so'ng o'zgartirilishi mumkin emas.
TypeScript bu holatni kompilyatsiya vaqtida oldini oladi, lekin nazariy jihatdan JavaScriptga kompilatsiya qilinganida siz hali ham readonly xususiyatni o'zgartirishingiz mumkin.
Misol:
interface Person {
name : string ;
age : number ;
}
const person : Readonly < Person > = {
name: "Dylan" ,
age: 35 ,
};
person.name = 'Israel' ; // prog.ts(11,8): error TS2540: Cannot assign to 'name' because it is a read-only property.