Middle
დაგჭირვებიათ ოდესმე გამოიყენოთ დისკრიმინანტული ერთეულები და type guards? რა შიდა type guards-ებს იცნობთ?
sobes.tech AI
პასუხი AI-სგან
Discriminated unions (ayrımcı birleştirmeler) ve type guards (tür koruyucuları) 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
}