Вы не можете переопределить элемент типа, который полностью установлен, вы можете наложить более жесткие ограничения на него (если тип был абстрактным, например, с type Meta <: Meta[B]
), не обходясь без предыдущих ограничений вообще.
То, что вы сделали, было бы несостоятельным, если бы позволили. У вас были бы способы изменить сигнатуру метода по желанию в подклассах, если вы использовали псевдонимы типов в базовом классе (где то, что у вас было, это просто псевдоним типа)
Что касается универсального элемента типа против элемента type, то это не совсем четкий вопрос, но я думаю, что тип type определенно лучше, когда он не отображается в публичном интерфейсе свойства, и в этом случае клиент не должен беспокоиться упомянуть об этом. Если это произойдет, (здесь в результате meta
), я бы сначала рассмотрел дженерики.