Məzmuna keçin
  • Kateqoriyalar
  • Ən yeni
  • Teqlər
  • Populyar
Yığmaq
Brend loqosu
  1. Əsas səhifə
  2. Front-end
  3. JavaScript
  4. Duck Typing nədir? JavaScript-də tətbiqi və nümunələrlə izah

Duck Typing nədir? JavaScript-də tətbiqi və nümunələrlə izah

Planlaşdırılıb Sabitlənib Kilidlənib Köçürülüb JavaScript
typesstructural🦆duck
1 Yazı 1 Yazarlar 40 Baxış
  • Ən köhnədən yeniyə
  • Ən yenidən köhnəyə
  • Ən çox səs
Cavab ver
  • Mövzu olaraq cavablandır
🔑 Daxil ol
Bu mövzu silindi. Yalnız mövzu idarəçiliyi imtiyazlarına malik olan istifadəçilər onu görə bilər.
  • codexC Oflayn
    codexC Oflayn
    codex
    yazdı sonuncu dəfə codex tərəfindən redaktə edilib
    #1

    Proqramlaşdırmada 🦆Duck Typing — tip yoxlamasının obyektin davranışına əsasən aparılması prinsipidir. Bu ifadə məşhur bir sitatdan götürülüb:

    “Əgər nəsə ördək kimi gəzir, ördək kimi səs çıxarırsa, deməli bu ördəkdir.”


    🧪 Duck Typing nə deməkdir?

    Duck Typing-də obyektin tipi yox, onun interfeysi və ya xüsusiyyətləri/metodları əsas götürülür. Yəni:

    function printName(entity) {
      if (typeof entity.sayName === "function") {
        entity.sayName();
      } else {
        console.log("Bu obyektin sayName funksiyası yoxdur.");
      }
    }
    

    Burada entity adlı obyektin sayName() funksiyası olub-olmaması yoxlanılır. Onun hansı sinifdən və ya hansı tipdən olması önəmli deyil. Bu, Duck Typing yanaşmasıdır.


    🛠 JavaScript-də Duck Typing nümunələri

    const user = {
      name: "Elvin",
      sayName() {
        console.log(`Mənim adım ${this.name}`);
      },
    };
    
    const robot = {
      id: 42,
      sayName() {
        console.log("Mən bir robotam.");
      },
    };
    
    function greet(entity) {
      entity.sayName(); // Duck Typing prinsipi
    }
    
    greet(user);   // Mənim adım Elvin
    greet(robot);  // Mən bir robotam.
    

    Hər iki obyektin sayName() funksiyası olduğu üçün greet() funksiyası uğurla işləyir. Obyektlərin tipi yox, davranışları ön plandadır.


    💡 Duck Typing ilə tip sistemi arasındakı fərqlər

    Xüsusiyyət Tip əsaslı yanaşma (OOP) Duck Typing (JavaScript)
    Tip yoxlanışı Kompilyasiya zamanı Run-time (işləmə zamanı)
    Tipə əsaslanma Sinif və interfeys Obyektin davranışı
    Quraşdırılmış tiplər Zəruridir Məcburi deyil
    Əsas məqsəd Güvənlik və sabitlik Çeviklik və sadəlik

    ⚠️ Duck Typing-in riskləri

    Duck Typing çox çevik olsa da, müəyyən risklər yarada bilər:

    • Run-time səhvlər: Əgər obyekt gözlənilən funksiyanı ehtiva etmirsə, proqram iş zamanı çökə bilər.
    • Oxunmaz kod: Tip təhlükəsizliyi olmadığından, böyük layihələrdə kodun izlənməsi çətinləşə bilər.
    • IDE köməyi az olur: Tip məlumatı olmadığı üçün kod tamamlaması və səhv yoxlamaları zəif ola bilər.

    Bu səbəblərə görə, TypeScript kimi dillər Duck Typing-in üstünlüklərini qoruyaraq, struktur tip yoxlaması (structural typing) təklif edir.


    ✅ Duck Typing vs Structural Typing (TypeScript)

    TypeScript-də interface vasitəsilə Duck Typing daha formal şəkildə tətbiq edilir:

    interface Nameable {
      sayName(): void;
    }
    
    function greet(entity: Nameable) {
      entity.sayName();
    }
    
    const person = {
      name: "Aysu",
      sayName() {
        console.log("Salam, mən Aysu");
      },
    };
    
    greet(person); // ✅ Keçərli: struktura uyğundur
    

    Burada person Nameable interfeysinə uyğun davranır, çünki sayName metoduna malikdir. Bu, TypeScript-də struktur əsaslı Duck Typing-dir.


    📌 Nəticə

    JavaScript-də Duck Typing proqramçıya obyektin funksionallığına görə davranmaq imkanı verir. Bu yanaşma, daha çevik və rahat kod yazmağa imkan yaratsa da, səhv ehtimallarını artırır. Böyük layihələrdə ya öz tip yoxlamanızı əlavə etməlisiniz, ya da TypeScript kimi həllərə üstünlük verməlisiniz.

    1 cavab Son cavab
    Cavab ver
    • Mövzu olaraq cavablandır
    🔑 Daxil ol
    • Ən köhnədən yeniyə
    • Ən yenidən köhnəyə
    • Ən çox səs




    Bilik paylaşdıqca artan bir sərvətdir
    • Daxil ol

    • Sizin hesabınız yoxdur? Qeydiyyatdan keç

    • Axtarış etmək üçün daxil olun və ya qeydiyyatdan keçin.
    • İlk yazı
      Son yazı
    0
    • Kateqoriyalar
    • Ən yeni
    • Teqlər
    • Populyar