“Optional Chaining” Kavramı

Bu yazımızda, programlama dillerinde sıkça karşılaşılan ve özellikle modern dillerde popüler hale gelen “Optional chaining” konseptine odaklanacağız.

“Optional Chaining” Nedir?

“Optional chaining”, dilin sözdizimi içerisinde bir nesnenin özelliklerine veya metodlarına güvenli bir şekilde erişim sağlama yeteneğidir. Bu yetenek sayesinde, bir özelliğin veya metotun mevcut olup olmadığını kontrol etmek için uzun ve karmaşık koşullu ifadeler yazmaya gerek kalmaz.

Nesne özelliklerine güvenli ve daha kısa bir şekilde erişmek için kullanılan bu özellik, özellikle iç içe geçmiş nesnelerin özelliklerine erişirken, bir özelliğin veya alt özelliğin bulunmaması durumunda hata önlemeye yardımcı olur.

JavaScript’te “Optional Chaining” Kullanımı

“Optional chaining”, birçok modern programlama dilinde benzer biçimlerde mevcuttur veya bu dillerin bazılarında benzer işlevselliği sağlayan farklı mekanizmalar bulunmaktadır. JavaScript (ES2020 versiyonuyla) bu özelliği ?. operatörü ile getirmiştir ve şu şekilde çalışır:

  • Eğer nesne veya özellik mevcutsa, ilgili değeri döndürür.
  • Eğer nesne veya özellik mevcut değilse, hata üretmeden undefined değeri döndürür.

Bu özellik, JavaScript gibi programlama dillerinde daha okunabilir ve anlaşılır kod yazmayı sağlayan bir tür syntactic sugar örneğidir. Ne işe yaradığını ve nasıl kullanıldığını bir örnek üzerinden inceleyelim:

Yukarıdaki örneğimizde yer alan user nesnesinin address özelliğindeki city değerine erişmek istesek, geleneksel olarak şu şekilde bir yöntem izlerdik:

Bu yaklaşım, user ve user.address nesnelerinin var olup olmadığını kontrol eder ve eğer herhangi biri mevcut değilse, herhangi bir hata üretmez ve city değişkenine undefined değeri atanır. Ancak bu kodu optional chaining kullanarak aşağıdaki gibi yazabiliriz:

?. operatörü ile benzer şekilde, user ve user.address nesnelerinin var olup olmadığını kontrol edilir ve eğer herhangi biri mevcut değilse, hata üretmeden city değişkenine undefined değeri atanır.

İki yöntemi kıyaslayınca optional chaning’in ne kadar temiz ve okunaklı bir kod yazımı sağladığı görülmektedir.

Bir başka örnek daha yapıp yazımızı sonlandıralım:

Yukarıdaki örneğimizde, ogrenci adında bir nesne tanımlanmıştır. Bu nesnenin içinde isim ve adres adında iki özellik bulunmaktadır. adres özelliği ise il ve ilce olmak üzere kendi içinde iki alt özelliğe sahiptir.

Derken, bu nesnenin adres altındaki mahalle isimli bir özelliğini kullanmak istedik diyelim. Ancak, bu özellik ogrenci nesnesinde tanımlı değil. Eğer ogrenci.adres.mahalle şeklinde doğrudan erişmeye çalışırsak, bu özellik mevcut olmadığı için JavaScript hata verecektir.

Ancak ES2020 ile getirilen “Optional Chaining” özelliği sayesinde ?. operatörü kullanarak ogrenci.adres?.mahalle şeklinde bir erişim sağladığımızda, JavaScript bize bir hata vermeyecek sadece undefined döndürecektir.

Haliyle kod yazarken karşılaşabileceğimiz “Cannot read property ‘X’ of undefined” türündeki hataların önüne geçmekte büyük bir kolaylık sağlar.

Bu özellik, özellikle API cevapları veya dış kaynaklardan gelen belirsiz yapıdaki verilerle çalışırken çok kullanışlıdır. Bir özelliğin mevcut olup olmadığını kontrol etmeden doğrudan erişim sağlamak istediğinizde işinizi kolaylaştırır.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu