Middle
Կարո՞ղ եք օգտագործել դիսկրիմինանտային միավորումներ և type guards: Ինչպիսի՞ն են ձեր ծանոթը տեղական type guards-ները։
sobes.tech AI
Պատասխան AI-ից
Discriminated unions (ayrımcı birləşmələr) və type guards (tür qoruyucuları) TypeScript-də güclü alətlə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 — hər bir tipin ümumi bir ədədli açarı (məsələn, type sahəsi) olan tiplərdir, bu sayədə konkret tipi dəqiq müəyyən etmək mümkündür.
Type guards — funksiyalar və ya strukturlar, hansı ki, icra zamanı dəyişənin tipini yoxlayır və tərtibçi üçün tipi daraldır.
TypeScript-də daxili olan tip guards:
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
Misal üçün, diskriminativ birləşmə və tip guard 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 diskriminator və switch tip guard kimi işləyir.
İstifadə edilən daxili tip guards:
function isString(qiymət: unknown): qiymət is string {
return typeof qiymət === 'string';
}
if (isString(bir şey)) {
// burada, `bir şey` string tipindədir
}