@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
vabka
@vabka
Токсичный шарпист
1. Сделать явную проверку на undefined
2. Избавиться от опционального параметра совсем
3. Сделать параметр не опциональным
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы