можно придумать - сделать вид, что это ок, что не оказалось эл-та сделать "проверку" и вызвать функцию
а потом бегай по коду и ищи почему логика перестала работать, а это какой-то гений "обработку" (читай затычку) сделал
optional chaining как раз и есть та самая проверка
так и тут я сказал, что сделать "проверку", хотя по факту это просто избегания вылета исключения, там где он и должен был появиться, так как нарушена, какая-то логика, либо это и задуманное поведение, но его лучше как-то оформить. Но в 90% случаев я видел что люди втыкают optional chaining чтоб заткнуть TSи сделать вид "обработки"
По этой логике if это тоже "избегание" Optional chaining из js, если что
Все программирование это "избегание" ошибок🙂
вот тут вообще непонятно к чему это. Затыкают TS то что он им тычет мол тут возможно null, а ты отмахиваешься чейнингом. Да и вообще этот оператор слишком часто юзают там где он не должен быть. Оператор реально крутой и полезный, но он не виноват, что им "забивают" гвозди. Просто, иногда людям надо думать, а точно ли "ничего не сделать", это то что я хочу сделать в данном случае, а не указать явно на последствие отсутствия эл-та (или какого-то поля) Игнорирование проблемы != ее решение Только если это не осознанно запланированное поведение
Можете рассказать в чем отличие в следующих случаях по вашему мнению? handle?.method() if (handle) { handle.method() }
1ый вариант вполне жизнеспособен, если так и задумано, но представь, что handle точно должен был бы быть. и тогда вторым вариантом должен быть скорее if (!handle) { throw new Error('no required handle') } handle.method() думаю так разница чуть нагляднее
тогда пропадает смысл всего, что было написано вами выше, делай хорошо не делай плохо, используй когда нужно и не используй когда не нужно
скорее: думай когда что нужно использховать) речь шла именно о осознанном выборе варианта (именно поэтому я расписывал 3 сценария) И я ни разу не написал: так никогда не пишите, всегда была указка на условия или что "это был осознанный выбор"
Обсуждают сегодня