Vlad Sobenko
А как в псалме боретесь с невалидными типами в dto, после его валидации?
Типа после валидации не должно быть null полей(будет ошибка), но псалм же не знает о валидации и ругается.
Выносить в переменные и прописывать докблоки с уточнением типа, или ещё както можно?
Делаешь объект с конкретными ограничениями, который и будешь дальше использовать.
Создаешь его через умный конструктор, который будет принимать твое DTO и возвращать объект, если DTO валиден или же список ошибок, если нет.
Все - псалм больше не ругается.