TypeScript 3.7 теперь поддерживает опциональный оператор цепочки . Следовательно, вы можете написать такой код:
const value = a?.b?.c;
Т.е. вы можете использовать этот оператор для доступа к свойствам объекта, где сам объект может находиться null
или undefined
. Теперь я хотел бы сделать то же самое, но имена свойств являются динамическими:
const value = a?[b]?.c;
Тем не менее, там я получаю синтаксическую ошибку:
ошибка TS1005: ':' ожидается.
Что я здесь не так делаю? Это вообще возможно?
PS: предложение, кажется, подразумевает, что это невозможно but (но, возможно, я неправильно понимаю примеры синтаксиса).
javascript
typescript
optional-chaining
Голо Роден
источник
источник
?.
Ответы:
При доступе к свойству с использованием скобочных обозначений и необязательных цепочек, вам также необходимо иметь точку в дополнение к скобкам:
Это синтаксис, принятый предложением TC39 , потому что в противном случае синтаксическому анализатору будет сложно определить, является ли это
?
частью троичного выражения или частью необязательного сцепления.источник
: