Интерфейс нужен для описания некоего общего контракта, который обязаны поддерживать все реализации этого интерфейса. В данном случае IData никаких контрактов не реализует и, как по мне, никакого смысла не имеет. Если нужно хранить в SomeClass данные любых типов, то пусть так и остается any, который затем при необходимости можно будет кастить во что угодно.