Sobes.tech
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.