CodeBlanks Logo Icon CodeBlanks

Property decorator

Özellik decorator'larını öğrenirsin.

Property decorator

Özellik decorator'u, bir sınıf özelliğinin hemen üstüne yazılır ve iki argüman alır: (target, key). target sınıf prototype'ı, key ise özellik adıdır. Metot decorator'undan farklı olarak descriptor alınmaz; çünkü özellik henüz tanımlanmamış olabilir.

function Kayit(
  target: any,
  key: string
) {
  console.log("özellik: " + key);
}

class Kisi {
  @Kayit ad: string;
}

Property decorator kullanım alanları

Property decorator'lar genellikle özellik adlarını kaydetmek, doğrulama kuralları eklemek veya metadata taşımak için kullanılır. Çalışma anında özellik değeri henüz atanmamış olabilir; bu yüzden decorator genellikle kayıt yapar ve değeri sonradan işler. Örneğin bir form alanlarını otomatik bulan bir sistem, property decorator'larıyla alan adlarını toplayabilir.

Uygulama Özellik kaydı ekle

Kayit decorator'u yaz: (target: any, key: string) alsın ve console.log("özellik: " + key) ile özellik adını yazdırsın. Kisi sınıfı yaz; ad: string özelliği ve constructor(ad: string) olsun, constructor this.ad = ad yapsın. Decorator'u Kisi.prototype ve "ad" ile çağırarak elle uygula. k değişkenine new Kisi("Ayşe") ata, k.ad'ı console.log ile yazdır.

Başlangıç kodu

index.ts
// Kayit decorator'unu yaz: target ve key alır
// console.log ile "özellik: " + key yazdır
// Kisi sınıfı yaz: ad özelliği ve constructor(ad: string)
// constructor this.ad = ad yapsın
// Decorator'u Kisi.prototype ve "ad" ile çağırarak elle uygula
// k = new Kisi("Ayşe") ile örnek oluştur
// k.ad'ı yazdır

Örnek çözüm

index.ts
function Kayit(target: any, key: string): void {
  console.log("özellik: " + key);
}

class Kisi {
  ad: string;
  constructor(ad: string) {
    this.ad = ad;
  }
}

Kayit(Kisi.prototype, "ad");
const k = new Kisi("Ayşe");
console.log(k.ad);

Beklenen çıktı

özellik: ad
Ayşe

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir property decorator'u kaç argüman alır?

  • 2 Doğru cevap
  • 3
  • 0
  • 1

Açıklama: Property decorator'u iki argüman alır: target (prototype) ve key (özellik adı). Üç argüvan metot decorator'una, bir argüman sınıf decorator'una aittir.

2 Property decorator imzası

Soru
function Kayit(target: any, ____): void {
  console.log("özellik: " + key);
}
Cevap
function Kayit(target: any, key: string): void {
  console.log("özellik: " + key);
}

Açıklama: Property decorator iki parametre alır: target ve key. descriptor yalnızca metot decorator'larında bulunur; value ve ctor bu imzada geçerli değildir.

3 Property decorator parçaları

Kavram Anlamı
target Sınıf prototype'ı
key Özellik adı
(target, key) Property decorator imzası
console.log(key) Özellik adını yazdırma

Orta seviye bölümündeki tüm dersler