@VDone

Объясните значения цитаты из документации Typescript?

Читаю документацию про оператор ненулевого значения (!), возник вопрос.
Примеры из документации
6364f3e726227999045721.png

Обычно в таких случаях стоит изменить архитектуру, но если разработчик в полной мере осознает последствия, то компилятор можно настоятельно попросить закрыть глаза на потенциально опасное место при помощи оператора Not-Null Not-Undefined.


6364f41123ffc628275596.png

Объясните, пожалуйста, как можно изменить архитектуру, чтобы избежать "!"
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
type UserEvent = {type: string }
function handler(event?:UserEvent) :void{
    // @ts-ignore  // гасим предупреждение
  let type = event.type; // тут возможно undefined
  console.log('type: ' + type)
}
function handler1(event?:UserEvent) :void{
  console.log('тут вы плюнули на все и надеетесь на лучшее')
  let type = event!.type; // тут вы плюнули на все и надеетесь на лучшее
} 
function handler2(event?:UserEvent) :void{
  if(event && event.type) // тут проверили что есть event и у него есть свойство type
  {
    let type = event.type;
    console.log(type)
  }
  console.log('бодрячком')
}
// console.log('test')
handler({type: 'aaaa'}) // нормально
handler2()
handler2({type: 'bbbbb'})
handler() // ошибка в рантайме, потому что мы задавили ошибку
handler1() // снова ошибка
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
1. Сделать явную проверку на undefined
2. Избавиться от опционального параметра совсем
3. Сделать параметр не опциональным
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы