Nesne özelliklerine erişim için isteğe bağlı zincirleme işleci kullanma


14

TypeScript 3.7 artık isteğe bağlı zincirleme işlecini desteklemektedir . Bu nedenle, aşağıdaki gibi bir kod yazabilirsiniz:

const value = a?.b?.c;

Yani, bu operatörü, nesnenin kendisinin olabileceği bir nesnenin özelliklerine erişmek için kullanabilirsiniz nullveya undefined. Şimdi ne yapmak istiyorum temelde aynı, ancak özellik adları dinamik:

const value = a?[b]?.c;

Ancak, bir sözdizimi hatası alıyorum:

hata TS1005: ':' bekleniyor.

Burada neyi yanlış yapıyorum? Bu mümkün mü?

PS: Teklif bunun mümkün olmadığını ima ediyor gibi görünüyor 😕 (ama belki de sözdizimi örneklerini yanlış anlıyorum).



Evet, elbette, çok teşekkürler 😊
Golo Roden

Yanıtlar:


17

Köşeli ayraç gösterimi ve isteğe bağlı zincirleme kullanarak bir özelliğe erişirken, köşeli parantezlere ek olarak bir noktaya sahip olmanız gerekir:

const value = a?.[b]?.c;

Bu, TC39 önerisi tarafından benimsenen sözdizimidir, aksi takdirde ayrıştırıcının ?üçlü bir ifadenin veya isteğe bağlı zincirlemenin bir parçası olup olmadığını anlaması zordur .


1
Ben değiştirecekti sert ile imkansız .
vol7ron

@ vol7ron neden bu kadar - ben dört gözle :
bekleyebilirsiniz

Özellikle hatalar olduğunda ayırt edemezdi.
vol7ron
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.