Middle
Vai jums ir bijusi nepieciešamība izmantot diskriminējošās vienības un type guards? Kādus iebūvētos type guards jūs pazīstat?
sobes.tech AI
Atbilde no AI
Discriminated unions (discriminated unions) un type guards (tipu sargi) ir spēcīgi rīki TypeScript, kas ļauj droši noteikt konkrētu tipu apvienībā.
Discriminated unions ir tipu apvienības, kurās katram tipam ir kopīgs literālais atslēgas lauks (piemēram, lauks type), ar kuru var skaidri identificēt konkrētu tipu.
Type guards ir funkcijas vai konstrukcijas, kas pārbauda mainīgā tipu izpildes laikā un sašaurina tipu kompilatoram.
Iekļautie TypeScript tipa sargi:
typeof— primitivajiem tipiem (string,number,boolean)instanceof— pārbaudei, vai objekts pieder klaseiin— pārbaudei, vai īpašība pastāv objektā
Piemērs diskriminētai apvienībai un tipa sargam:
interface Kvadrāts {
kind: 'square';
size: number;
}
interface Aplis {
kind: 'circle';
radius: number;
}
type Forma = Kvadrāts | Aplis;
function laukums(forma: Forma): number {
switch (forma.kind) {
case 'square':
return forma.size * forma.size;
case 'circle':
return Math.PI * forma.radius ** 2;
}
}
Šeit kind ir diskriminators, un switch darbojas kā tipa sargs.
Izmantojot iebūvētos tipa sargus:
function irString(vērtība: unknown): vērtība is string {
return typeof vērtība === 'string';
}
if (irString(kas)) {
// šeit, `kas` ir string
}