Diskriminant birləşmələr və type guards istifadə etdinizmi? Hansı daxili type guards bilirsiniz?
sobes.tech Süni İntellekt
AI-dan cavab
Discriminated unions (ayrımcı birləşmələr) və tip qoruyucuları (type guards), TypeScript-də tiplərlə işləmək üçün güclü vasitələrdir və birləşmədəki müəyyən bir tipi təhlükəsiz şəkildə müəyyən etməyə imkan verir.
Discriminated unions (ayrımcı birləşmələr), hər bir tipin ümumi bir ədədli açar (məsələn, type sahəsi) olduğu və bu sayədə müəyyən bir tipi dəqiq müəyyən edə bilən birlik tipləridir.
Tip qoruyucuları (type guards), icra zamanı dəyişənin tipini yoxlayan və tərtibçi üçün tipi daraldan funksiyalar və ya quruluşlardır.
TypeScript-də daxili olan tip qoruyucuları:
typeof— əsas tiplər üçün (string,number,boolean)instanceof— sinfə aid olub olmadığını yoxlamaq üçünin— obyektə aid xüsusiyyətin olub-olmadığını yoxlamaq üçün
Discriminated union və tip qoruyucu nümunəsi:
interface Dördkünc {
kind: 'square';
size: number;
}
interface Dairə {
kind: 'circle';
radius: number;
}
type Forma = Dördkünc | Dairə;
function sahə(forma: Forma): number {
switch (forma.kind) {
case 'square':
return forma.size * forma.size;
case 'circle':
return Math.PI * forma.radius ** 2;
}
}
Burada kind ayırıcıdır və switch bir tip qoruyucusu kimi çıxış edir.
İstifadə edilən daxili tip qoruyucuları:
function isString(qiymət: unknown): qiymət is string {
return typeof qiymət === 'string';
}
if (isString(bir şey)) {
// burada, bir şey string tipindədir
}