Sobes.tech
Middle

TypeScript'te ne zaman türleri, ne zaman arayüzleri kullanmalısınız?

sobes.tech yapay zeka

AI'dan gelen yanıt

Türleri (type) kullanmak için:

  • Birlikler (unions) ve kesişimler (intersections):
    type Status = "pending" | "completed" | "failed";
    type UserWithAddress = User & Address;
    
  • İlkel türler ve literal'lar:
    type ID = string | number;
    type Direction = "up" | "down" | "left" | "right";
    
  • Diziler (tuples):
    type RgbColor = [number, number, number];
    
  • Mevcut türler için alias'lar oluşturma:
    type StringOrNumber = string | number;
    
  • Koşullu türler (conditional types):
    type TypeOfProp<T, K extends keyof T> = T[K];
    

Arayüzler (interface) kullanmak için:

  • Nesne yapısının tanımı:
    interface User {
      id: number;
      name: string;
      age?: number; // Opsiyonel özellik
    }
    
  • Sınıflar tarafından uygulanması (implements):
    interface Logger {
      log(message: string): void;
    }
    
    class ConsoleLogger implements Logger {
      log(message: string) {
        console.log(message);
      }
    }
    
  • Diğer arayüzleri genişletmek (extends):
    interface Person {
      name: string;
    }
    
    interface Employee extends Person {
      employeeId: number;
    }
    
  • Deklaratif birleşme (declaration merging): Bu, mevcut bir arayüzü yeniden bildirerek genişletmeye izin verir. Türler için bu mümkün değildir.
    interface Box {
      width: number;
    }
    
    interface Box { // Bu, Box arayüzüne height özelliğini ekleyecektir
      height: number;
    }
    

Kısa karşılaştırma:

Özellik type interface
Birlik türleri Evet Hayır
Kesişim türleri Evet Hayır
İlkel türler/literal'lar Evet Hayır
Tuple'lar Evet Hayır
Tür alias'ları Evet Hayır
Koşullu türler Evet Hayır
Nesne tanımı Evet Evet
Sınıf uygulaması Hayır Evet
Genişletme Evet (& kullanarak) Evet (extends kullanarak)
Deklaratif birleşme Hayır Evet

Genel olarak, nesne yapısını tanımlamak için interface kullanmak tercih edilir, çünkü nesne yönelimli yaklaşıma daha uygundur ve deklaratif birleşmeyi destekler. Diğer tüm durumlar, özellikle mevcut türleri birleştirme ve yeni türler oluşturma konusunda, type daha esnektir.