Это не проблема стейт-менеджера, а скорее вопрос подхода.
Возьмем redux. Типичный нормализованный стор каких-нибудь пользоватей:
users: {
[id: string]: {
name: 'Vasia'
}
}
Типичный подход - в селекторе написать:
// получить юзера, в полной уверенности что он там есть - а как же иначе?? я же сам его туда клал!
const user = store.users[id];
return { name: user.name } // получить ошибку "undefined тебе не объект"
Но на самом деле в Redux структура стейта - простой key/value объект.
Что он гарантирует? Только то, что по ключу key можно получить либо данные, хранящиеся под этим ключом, либо undefined. Чтобы быть уверенным, что какое-то поле точно есть, необходимо использовать классы, они могут гарантировать наличие каких-то своих обязательных полей. Key/value объект никогда ничего такого не гарантировал. И поэтому отсутствие каких-то данных в сторе - это вопрос ни на чем не основанных ожиданий разработчика :)
==========
Собственно, я зашил поблагодарить за отличные видео!
Классный рассказ про InfersifyJS. Если бы раньше знал, может быть его взял бы себе в проект, но я не нашел ничего кроме сервис-локаторов среди DI, не требующих TS. В итоге написал свой. Заодно без reflect-metadata