Sobes.tech
Middle

TypeScriptda qanday hollarda turlarni, qanday hollarda interfeyslarni ishlatish kerak?

sobes.tech AI

AIdan javob

Turlar (type) niyatlash uchun:

  • Birliklar (unions) va kesishmalar (intersections):
    type Status = "pending" | "completed" | "failed";
    type UserWithAddress = User & Address;
    
  • Asosiy turlar va litralar:
    type ID = string | number;
    type Direction = "up" | "down" | "left" | "right";
    
  • Tuples:
    type RgbColor = [number, number, number];
    
  • Mavjud turlar uchun aliaslar yaratish:
    type StringOrNumber = string | number;
    
  • Shartli turlar:
    type TypeOfProp<T, K extends keyof T> = T[K];
    

Interfeyslar (interface) uchun:

  • Obyekt tuzilmasini tasvirlash:
    interface User {
      id: number;
      name: string;
      age?: number; // Ixtiyoriy xususiyat
    }
    
  • Klasslar bilan amalga oshirish (implements):
    interface Logger {
      log(message: string): void;
    }
    
    class ConsoleLogger implements Logger {
      log(message: string) {
        console.log(message);
      }
    }
    
  • Boshqa interfeyslarni kengaytirish (extends):
    interface Person {
      name: string;
    }
    
    interface Employee extends Person {
      employeeId: number;
    }
    
  • Deklarativ birlashma (declaration merging): Bu mavjud interfeysni yana e'lon qilib kengaytirishga imkon beradi. Turlar uchun bu mumkin emas.
    interface Box {
      width: number;
    }
    
    interface Box { // Bu Box interfeysiga height xususiyatini qo'shadi
      height: number;
    }
    

Qisqa taqqoslash:

Xususiyat type interface
Birlik turlari Ha Yo'q
Kesişme turlari Ha Yo'q
Asosiy turlar/literal'lar Ha Yo'q
Tuple'lar Ha Yo'q
Turlar uchun aliaslar Ha Yo'q
Shartli turlar Ha Yo'q
Obyekt ta'rifi Ha Ha
Klasslar bilan amalga oshirish Yo'q Ha
Kengaytirish Ha (& bilan) Ha (extends bilan)
Deklarativ birlashma Yo'q Ha

Umuman olganda, obyekt tuzilmasini ta'riflash uchun interface ishlatish ma'qul, chunki ular ob'ektga yo'naltirilgan yondashuvga mos keladi va deklarativ birlashishni qo'llab-quvvatlaydi. Boshqa barcha holatlar uchun, ayniqsa, mavjud turlarni birlashtirish va yangi turlar yaratish uchun, type ko'proq mos keladi.