Это невозможно.Проверка типа выполняется во время компиляции, но конкретный тип someField
неизвестен до времени выполнения.Все, что знает компилятор, это то, что это подкласс ParentTrait
, он не может знать, какой из них будет присутствовать при вызове функции.
Вы можете использовать match
в myFunction
для проверкичто у вас есть нужный вам тип, или создайте два варианта A
для двух возможных типов someField
.
Если только здесь нет веской причины для проверки статического типа, я бы предложил использовать match
и наличие модульного тестирования обнаружит случайное использование функции с «неправильным» значением someField
.Если вы пойдете по пути вариантов / обобщений, ваш код очень быстро станет очень сложным.