Menggunakan operator rantai opsional untuk akses properti objek


14

TypeScript 3.7 sekarang mendukung operator perangkaian opsional . Karenanya, Anda dapat menulis kode seperti:

const value = a?.b?.c;

Yaitu, Anda dapat menggunakan operator ini untuk mengakses properti dari suatu objek, di mana objek itu sendiri mungkin nullatau undefined. Sekarang apa yang ingin saya lakukan pada dasarnya sama, tetapi nama properti dinamis:

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

Namun, di sana saya mendapatkan kesalahan sintaksis:

kesalahan TS1005: ':' diharapkan.

Apa yang saya lakukan salah di sini? Apakah ini mungkin?

PS: Usulan itu sepertinya menyiratkan bahwa ini tidak mungkin 😕 (tapi mungkin saya salah mengambil contoh sintaks).


1
Anda melewatkan intinya, operatornya adalah?.
zessx

Ya, tentu saja, terima kasih banyak 😊
Golo Roden

Jawaban:


17

Saat mengakses properti menggunakan notasi braket dan perangkaian opsional, Anda juga harus memiliki titik di samping tanda kurung:

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

Ini adalah sintaks yang diadopsi oleh proposal TC39 , karena kalau tidak sulit bagi parser untuk mencari tahu apakah ini ?adalah bagian dari ekspresi ternary atau bagian dari perangkaian opsional.


1
Saya akan mengganti yang sulit dengan yang tidak mungkin .
vol7ron

@ vol7ron mengapa begitu - saya pikir ini dapat :
dinanti

Itu tidak akan bisa membedakan, terutama ketika ada kesalahan.
vol7ron
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.