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 { // Бул Box интерфейсине height кошот
      height: number;
    }
    

Кыскача салыштыруу:

Өзгөчөлүк type interface
Бирикмелер (unions) Ооба Жок
Кесилиштер (intersections) Ооба Жок
Баштапкы типтер/литерлер Ооба Жок
Туплдар (tuples) Ооба Жок
Алиас (aliases) Ооба Жок
Шарттуу типтер Ооба Жок
Объекттердин сүрөттөлүшү Ооба Ооба
Класс аркылуу ишке ашыруу Жок Ооба
Кеңейтүү (extends) Ооба (& колдонуу менен) Ооба (extends колдонуу менен)
Декларативдик бириктирүү Жок Ооба

Жалпысынан, объекттердин түзүлүшүн сүрөттөө үчүн interface колдонуу жакшы, анткени ал объект-ориенттелген жактан көбүрөөк ылайыктуу жана декларативдик бириктирүүнү колдойт. Калган бардык учурларда, өзгөчө комбинациялар жана бар типтерден жаңы типтер түзүүдө, type көбүрөөк ийкемдүү.