tensa_zangetsu
Centipat
- Katılım
- 28 Ağustos 2023
- Mesajlar
- 2.876
- Çözümler
- 11
LIFO gibi bir yapı oluyor F12'de incelediğim zaman. Yani son giren ilk çıktı veriyor. O yüzden ikinci metot çalışıyor.
Yani çakma overriding .
Yani çakma overriding .
Peki daha kisa bir yazim sekli yok mu?
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.):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;
}
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!");
}
}
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.Belki şu iki yöntemden biri de tercih edilebilir:
Verdiğim örnekleri kendim bile çok beğenmemekle birlikte sadece fikir vermek istedim.
- 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 yapabilirsinizif(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!"); } }
Ö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öresekil
'in yapısı değişiyor.sekil
'in tipi buna göre yazılabilir. Detaylı bilgi için bu sayfayı inceleyebilirsiniz.
Hem de daha iyi, güvenli, açıklayıcı ve anlaşılır yapılı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.
Geçmenizi öneririm. Kafanıza takılan konuları, TypeScript'i öğrenirken de açıklığa kavuşturma fırsatını elde edebilirsiniz bence.Aslinda JavaScript'i biliyorum ama bazi konular tam oturmadi. Mesela bu konu sizce TS gecmeli miyim?
Bu sitenin çalışmasını sağlamak için gerekli çerezleri ve deneyiminizi iyileştirmek için isteğe bağlı çerezleri kullanıyoruz.