Middle
TypeScript-də növləri nə zaman istifadə etməli və interfeysləri nə zaman?
sobes.tech Süni İntellekt
AI-dan cavab
Növlər (type) istifadə edilməlidir:
- Birliklər (unions) və kəsimlər (intersections):
type Status = "pending" | "completed" | "failed"; type UserWithAddress = User & Address; - Primitiv tiplər və literal'lar:
type ID = string | number; type Direction = "up" | "down" | "left" | "right"; - Tuples:
type RgbColor = [number, number, number]; - Mövcud tiplər üçün aliaslar yaratmaq:
type StringOrNumber = string | number; - Şərti tiplər:
type TypeOfProp<T, K extends keyof T> = T[K];
Interfeyslar (interface) istifadə edilməlidir:
- Obyektlərin strukturunun təsviri:
interface User { id: number; name: string; age?: number; // Seçimli xüsusiyyət } - Klasslar vasitəsilə tətbiq (implements):
interface Logger { log(message: string): void; } class ConsoleLogger implements Logger { log(message: string) { console.log(message); } } - Digər interfeyslərin genişləndirilməsi (extends):
interface Person { name: string; } interface Employee extends Person { employeeId: number; } - Deklarativ birləşmə (declaration merging): Bu, mövcud interfeysi yenidən elan edərək genişləndirməyə imkan verir. Tiplər üçün bu mümkün deyil.
interface Box { width: number; } interface Box { // Bu, Box interfeysinə height xüsusiyyətini əlavə edəcək height: number; }
Qısa müqayisə:
| Xüsusiyyət | type |
interface |
|---|---|---|
| Birlik tiplər | Bəli | Xeyr |
| Kesişmə tiplər | Bəli | Xeyr |
| Primitiv tiplər/literal'lar | Bəli | Xeyr |
| Tuple'lar | Bəli | Xeyr |
| Tiplər üçün aliaslar | Bəli | Xeyr |
| Şərti tiplər | Bəli | Xeyr |
| Obyekt təsviri | Bəli | Bəli |
| Siniflərlə tətbiq etmək | Xeyr | Bəli |
| Genişləndirmə | Bəli (& istifadə etməklə) |
Bəli (extends istifadə etməklə) |
| Deklarativ birləşmə | Xeyr | Bəli |
Ümumiyyətlə, obyekt strukturu təsvir etmək üçün interface istifadə etmək daha məsləhətdir, çünki onlar obyekt yönümlü yanaşmaya daha uyğundur və deklarativ birləşməni dəstəkləyir. Digər bütün hallarda, xüsusən də mövcud tiplərin birləşdirilməsi və mövcud tiplərdən yeni tiplər yaratmaq üçün, type daha çevikdir.