Sobes.tech
Middle

Кай вақт бояд дар TypeScript навъҳоро истифода баред ва кай интерфейсҳоро?

sobes.tech AI

Ҷавоб аз AI

Типҳо (type) бояд барои:

  • Иҷтимоъҳо (unions) ва мутаҳидҳо (intersections):
    type Status = "pending" | "completed" | "failed";
    type UserWithAddress = User & Address;
    
  • Типҳои ибтидоӣ ва литерҳо:
    type ID = string | number;
    type Direction = "up" | "down" | "left" | "right";
    
  • Туплҳо (tuples):
    type RgbColor = [number, number, number];
    
  • Эҷоди алиасҳо барои типҳои мавҷуда:
    type StringOrNumber = string | number;
    
  • Типҳои шароитӣ (conditional types):
    type TypeOfProp<T, K extends keyof T> = T[K];
    

Интерфейсҳо (interface) бояд барои:

  • Тавсифи сохтори объектҳо:
    interface User {
      id: number;
      name: string;
      age?: number; // хосияти ихтиёрӣ
    }
    
  • Иҷрои бо классҳо (implements):
    interface Logger {
      log(message: string): void;
    }
    
    class ConsoleLogger implements Logger {
      log(message: string) {
        console.log(message);
      }
    }
    
  • Тарафдории дигар интерфейсҳо (extends):
    interface Person {
      name: string;
    }
    
    interface Employee extends Person {
      employeeId: number;
    }
    
  • Масъулияти декларативӣ (declaration merging): Ин имкон медиҳад, ки интерфейс мавҷударо бо эълон кардани он дубора васеъ кард. Бо типҳо ин имконнопазир аст.
    interface Box {
      width: number;
    }
    
    interface Box { // Ин хосият height-ро ба интерфейси Box илова мекунад
      height: number;
    }
    

Муштаракӣ:

Хусусият type interface
Ҷамъбандӣ (union) Бале Не
Муттаҳид (intersection) Бале Не
Типҳои ибтидоӣ/литерҳо Бале Не
Туплҳо Бале Не
Алиасҳо Бале Не
Шартӣ (conditional) Бале Не
Тавсифи объектҳо Бале Бале
Иҷро бо классҳо Не Бале
Тарафдории (extends) Бале (& истифода мешавад) Бале (extends истифода мешавад)
Муштараксозӣ (merging) Не Бале

Дар маҷмӯъ, барои тавсифи сохтори объектҳо, истифодаи interface беҳтар аст, зеро он ба муносибати объектӣ бештар мувофиқ аст ва дастгирии муштараксозиро дорад. Барои ҳама чизҳои дигар, махсусан барои омезишҳо ва эҷоди намудҳои нав аз намудҳои мавҷуда, type бештар флексибл аст.