JavaScript ES2020 İle Gelen Yenilikler

61
JavaScript ES2020 İle Gelen Yenilikler

Son yılların en fazla rağbet gören programlama dillerinden birisi olan JavaScript, yaptığı önemli güncelleştirmeler ile yazılım geliştiriciler için büyük kolaylıklar sağlamaktadır. Bunlardan en önemlisi ECMAScript standartları ile geliştirilen büyüyen bir JavaScript olmasıdır. JavaScript’i kullanırken gerçekten haz alacaksınız aynı zamanda bir çok alanda her türlü projelerinizi rahatlıkla geliştirebileceksiniz. Bu yazımızda size ES2020 olarak adlandırılan JavaScript ECMAScript 2020 ile birlikte gelen yeni özellikleri göstereceğiz.

Dinamik İçe Aktarma (Dynamic import)

Dinamik içe aktarma, ES2020 ile beraberinde gelen en ilginç özelliklerden birisidir. Bu özellik web paketinin diğer modül paketleyicilerinin ek yükü olmadan, iste üzerine kod gönderme olarak bilinir. Daha öncesinde JavaScript’te bir modülü içe aktarmak istiyorsak buna benzer bir yapı kullanırdık.

import Math from ('./Math.js');
const Math = new Math;
Math.multiply();

Bu şekilde bir kullanım ile modülün statik yapıya sahip olmasını sağlıyoruz yani modülün bir kullanıcı işlemine bağlı olmadan otomatik yüklenmesini sağlıyoruz. Böylesine bir durum uygulama içerisinde gerekli olmayan modüllerin o an yüklenmesi durumunda uygulama içerisinde performans sorunları yaratacaktır. ES2020 sayesinde artık bir modülü performans sorunları olmaksızın kullanabiliriz. Aşağıdaki kod ile bu kullanıma bir örnek verebiliriz.

import Math from ('./Math.js');
.then((Math) => {
  const Math = new Math;
  Math.multiply();
});

(Desteklenen Tarayıcılar: Chrome 63, Firefox 67, Opera 50, Safari 11.1)

JavaScript BigInt

JavaScript’te  2 ^ 53-1‘den büyük sayıları temsil etmek JavaScript’in Number nesnesini kullanarak güvenli bir şekilde temsil edeceği en büyük sayı olduğu için sorunlar çıkarabilir. BigInt ise Number nesnesinin alabileceği sayı boyutundan daha büyük sayıları almasına olanak sağlamaktadır. Yine dikkat ettiğimizde BigInt adından da anlaşılacağı üzere tam sayıları kapsamaktadır. Bu sebepten ötürü ondalıklı sayıların kullanımına uygun değildir.

const bigNumber = BigInt (84973498284654)
//84973498284654n

JavaScript Promise.allSettled

ES2020 ile gelen bu özellik Promise.all değimine oldukça benzemektedir. Aralarındaki en önemli fark ise Promise.all tüm verilen işlerin yerine getirilmesini veya herhangi bir işin reddedilme durumunu bekler. Promise.allSettled verilen tüm vaatlerin en olursa olsun hepsinin yerine getirilmesini beklemektedir.

const promise1 = Promise.resolve(3);
const promise2 = new Promise((resolve, reject)=>
setTimeout (reject, 100, 'foo'));
const promise = [promise1, promise2];

Promise.allSettled(promises).
 then((results)=> results.foreach((result)=>
 console.log(result.status)));

//"yerine getirildi"
//"yerine getirlmedi"

(Desteklenen Tarayıcılar: Chrome 76, Firefox 71, Safari 13, Node 12.1) Bu konunun daha iyi anlaşılması için JavaScript Promise yapısının üzerinde durulması gerekmektedir.

JavaScript globalThis

ES2020 ile yeni gelen globalThis özelliği normal this ile erişilebilen alanların global olarak tanımlanmasını sağlamaktadır. Çalışma alanınıza göre global olarak çevre ortamına erişim sağlamanıza yardımcı olmaktadır.

function makeHTTPrequest(){
      return typeof globalThis.XMLHttpRequest === 'function';
}

console.log(makeHTTPrequest());

(Desteklenen Tarayıcılar: Chrome 71, Firefox 65, Safari 12.1, Node 12)

Sonuç olarak ES2020’yi deneyimlemek kodunuzu geliştirmenize yardımcı olacaktır. Ancak yazımızda verdiğimiz yeni gelen özellikleri tüm tarayıcılar içerisinde doğru çalıştığını söylemek yanlış olur. Özellik sonunda vermiş olduğumuz sürümlere dikkat etmenizde fayda var.

Bir cevap yazın