Пошёл делать тикет и нашёл уже существующий с ровно такой же проблемой.
И знаете, что там ответил мейнтейнер?
That's expected, if the type not match, that means a design issue in the first place, if property is private and nullable, and filled via constructor, that means the constructor should be nullable param as well as it just assign -> fill, no nullable check.
Почему он неправ
Есть большая разница между состоянием, в котором объект оказывается при создании, и состоянием, в которое он может прийти по ходу выполнения логики. В моём случае
null означает «больше нет», а не «никогда не было».Иными словами, тип параметра описывает то, что допустимо на входе, а тип свойства — все состояния объекта за его жизнь. В первую очередь мы декларируем параметр и свойство по отдельности, и уже во вторую рассматриваем возможность склеить их в promoted, но только если типы эквивалентны.
Открыл новую issue с моими пояснениями, посмотрим, дойдёт или нет...
⸻
🌿 Приняли первый доклад на Пыхник’26!
