Использование необязательного оператора цепочки для доступа к свойству объекта - PullRequest
3 голосов
/ 09 ноября 2019

TypeScript 3.7 теперь поддерживает опциональный оператор . Следовательно, вы можете написать код, такой как:

const value = a?.b?.c;

Т.е. вы можете использовать этот оператор для доступа к свойствам объекта, где сам объект может быть null или undefined. Теперь я хотел бы сделать то же самое, но имена свойств являются динамическими:

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

Однако там я получаю синтаксическую ошибку:

Ошибка TS1005: ': 'ожидается.

Что я здесь не так делаю? Возможно ли это вообще?

PS: предложение , по-видимому, подразумевает, что это невозможно ? (но, возможно, я неправильно понимаю примеры синтаксиса).

1 Ответ

2 голосов
/ 09 ноября 2019

При доступе к свойству с использованием скобочных обозначений и необязательной цепочки вам также необходимо иметь точку в дополнение к скобкам:

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

Это синтаксис, принятый предложением TC39, потому что в противном случае парсеру будет трудно определить, является ли этот ? частью троичного выражения или частью необязательного сцепления.

...