JavaScript Method overloading

Peki daha kisa bir yazim sekli yok mu?

Belki şu iki yöntemden biri de tercih edilebilir:
  • Parametreleri tercihe bağlı kullanmak: Sabit sayıda parametre olsun ve tüm parametreler undefined olabilsin. Bu sayede kullanıcı ilk birkaç parametreye değer girip diğerlerine girmeyebilir, siz de değeri girilmemiş parametrelerde duruma göre istediğinizi yapabilirsiniz if(param === undefined) ile (varsayılan değer kullanmak, parametreyi kullanmamak vb.):

    JavaScript:
    function rectangularPrismVolume(width, depth, height) {
      if (width === undefined) {
        // Bunun olmaması lazım :D
        // Olabilir de. Tercihinize göre bir şey yaparsınız.
        throw new Error("En azından genişliğini bilelim...");
      }
    
      if (depth === undefined) {
        return rectangularPrismVolume(width, width, height);
      }
    
      if (height === undefined) {
        return rectangularPrismVolume(width, width, 1);
      }
    
      return width * depth * height;
    }

    Kullandığım çoğu kütüphanede buna benzer bir düzen görüyorum. Benim verdiğim örnekten çok daha güzel kullanımlar oluyor. Özellikle varsayılan değer verebilme özelliğini güzel kullanıyorlar.
  • Parametreleri tek bir objenin içine koymak: Burada tek bir parametremiz oluyor, o da bir obje:

    JavaScript:
    function alan(sekil) {
      switch (sekil.type) {
        case "kare":
          return sekil.kenar * sekil.kenar;
        case "dikdortgen":
          return sekil.genislik * sekil.yukseklik;
        case "daire":
          return Math.PI * sekil.yaricap ** 2;
        case "ucgen":
          return (sekil.yukseklik * sekil.taban) / 2;
        // Gibi gibi...
        default:
          throw new Error("Hatalı şekil tipi!");
      }
    }
Verdiğim örnekleri kendim bile çok beğenmemekle birlikte sadece fikir vermek istedim.

Örnekleri yazarken TypeScript'in ne kadar güzel olduğunu tekrar gördüm. Özellikle ikinci örnekte TypeScript acayip işe yarayacaktır; sekil.type değişkenine göre sekil'in yapısı değişiyor. sekil'in tipi buna göre yazılabilir. Detaylı bilgi için bu sayfayı inceleyebilirsiniz.
 
Son düzenleme:
Belki şu iki yöntemden biri de tercih edilebilir:
  • parametreleri tercihe bağlı kullanmak: Sabit sayıda parametre olsun ve tüm parametreler undefined olabilsin. Bu sayede kullanıcı ilk birkaç parametreye değer girip diğerlerine girmeyebilir, siz de değeri girilmemiş parametrelerde duruma göre istediğinizi yapabilirsiniz if(param === undefined) ile (varsayılan değer kullanmak, parametreyi kullanmamak vb.):

    JavaScript:
    function rectangularPrismVolume(width, depth, height) { if (width === undefined) {
    // Bunun olmaması lazım :D
    // Olabilir de. Tercihinize göre bir şey yaparsınız.
    throw new Error("En azından genişliğini bilelim...");
    }
    
    if(depth === undefined) {
    return rectangularPrismVolume(width, width, height);
    }
    
    if(height === undefined) {
    return rectangularPrismVolume(width, width, 1);
    }
    
    return width * depth * height;
    }

    Kullandığım çoğu kütüphanede buna benzer bir düzen görüyorum. Benim verdiğim örnekten çok daha güzel kullanımlar oluyor. Özellikle varsayılan değer verebilme özelliğini güzel kullanıyorlar.
  • parametreleri tek bir objenin içine koymak: Burada tek bir parametremiz oluyor, o da bir obje:

    JavaScript:
    function alan(sekil) { switch(sekil.type) {
    case "kare":
    return sekil.kenar * sekil.kenar;
    case "dikdortgen":
    return sekil.genislik * sekil.yukseklik;
    case "daire":
    return Math.PI * sekil.yaricap**2;
    case "ucgen":
    return sekil.yukseklik * sekil.taban / 2;
    // Gibi gibi...
    default:
    throw new Error("Hatalı şekil tipi!");
    }
    }
Verdiğim örnekleri kendim bile çok beğenmemekle birlikte sadece fikir vermek istedim.

Örnekleri yazarken Typescript'in ne kadar güzel olduğunu tekrar gördüm. Özellikle ikinci örnekte typescript acayip işe yarayacaktır; sekil.type değişkenine göre sekil'in yapısı değişiyor. sekil'in tipi buna göre yazılabilir. Detaylı bilgi için bu sayfayı inceleyebilirsiniz.

Peki TypeScript ile bu islemler yapilabilir mi?
 
Son düzenleyen: Moderatör:
Peki TypeScript ile bu islemler yapilabilir mi?
Hem de daha iyi, güvenli, açıklayıcı ve anlaşılır yapılır.

TypeScript'in olayı, JavaScript'in üstüne tip konsepti eklemesi. C/C++ gibi tip atamanın gerektiği bir dil olarak düşünebilirsiniz. JavaScript'i biraz olsun anladıktan sonra TypeScript'e yönelmenizi kesinlikle tavsiye ederim.
 
Hem de daha iyi, güvenli, açıklayıcı ve anlaşılır yapılır.

Typescript'in olayı, JavaScript'in üstüne tip konsepti eklemesi. C/c++ gibi tip atamanın gerektiği bir dil olarak düşünebilirsiniz. JavaScript'i biraz olsun anladıktan sonra Typescript'e yönelmenizi kesinlikle tavsiye ederim.

Aslinda JavaScript'i biliyirum ama bazi konular tam oturmadi. Mesela bu konu sizce TS gecmeli miyim?
 
Aslinda JavaScript'i biliyorum ama bazi konular tam oturmadi. Mesela bu konu sizce TS gecmeli miyim?
Geçmenizi öneririm. Kafanıza takılan konuları, TypeScript'i öğrenirken de açıklığa kavuşturma fırsatını elde edebilirsiniz bence.

Ben de TypeScript'e geçmeden önce JavaScript'in tüm konseptlerini anlamıyordum. Geçtiğime hiç pişman değilim. :)

Bu aslında şu anki konudan biraz uzak bir konu olabilir. TypeScript için ayrı başlık açabilirsiniz, diğer arkadaşlar da fikirlerini belirtir.
 

Geri
Yukarı