Можно ли сочетать ненулевое утверждение с троичным? - PullRequest
0 голосов
/ 19 марта 2019

Давайте предположим, что я хочу получить параметр 'id' из моего маршрута в приложении Angular с использованием TypeScript.

Я мог бы сделать что-то вроде этого: this!.route!.snapshot!.parent!.paramMap.get('id')

Однако, если мое утверждение неверно и часть цепочки возвращает null, то это вызовет исключение во время выполнения.

Так что, делать что-то подобное имеет смысл? this!.route!.snapshot!.parent!.paramMap.get('id') ? this!.route!.snapshot!.parent!.paramMap.get('id') : '-1'

Или он всегда будет возвращать первый операнд (и потерпит неудачу, если ноль)?

1 Ответ

0 голосов
/ 19 марта 2019

Не забывайте, что TS будет скомпилирован в JS, а ненулевые утверждения не существуют в JS.

Итак, у вас есть два решения:

  • проверка каждого шага

    x = this && this.route && this.route.snapshot && ... || '-1'
    
  • Использовать блок try catch

    try {
      x = this.route.snapshot.parent.paramMap.get('id');
    } catch(error) {
      x = '-1';
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...