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).

Golo Roden
sumber
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.

Menara Nicholas
sumber
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