Joseph
Смотри вот тебе ситуация , ты реализовываешь паттерн репозиторий например findById , вот что ты должен вернуть если не нашел null или exception ?
давай дальше, во втором пункте сразу два тезиса
первый
ты спросил что лучше вернуть null или exception, если элемент не был найден
если возвращаем exception, то typescript статически это не проанализирует, то есть поимеем проблемы в рантайме
если возвращаем null, то typescript статически это проанализирует, и скажет добавить проверку
возвращаем null, проблем не имеем
второй
проблема нейминга, можно написать findById и вернуть null, но мы не говорим, что возвращаем null
можно написать findByIdOrNull, но длинно
а вот написать findById(id: Id, orDefault = null) будет достаточно, в сигнатуре сразу видно что и как работает