Где хранить переиспользуемые интерфейсы typescript?
Незаконно, файлы d.ts это для библиотек, написанных на js, которым нужны тайпинги.
Если проект на typescript, то типы и интерфейсы следует импортировать явно.
Либо из models(interfaces, types, ...whatever), либо из сервисов, которые с этими типами работают.
Я склоняюсь к модульной структуре, т.е. интерфейсы лежат в отдельной папке, рядом с тем местом, где они применяются.
Законно, по крайней мере пока еще не запретили, но возможно мы к этому когда-нибудь придем. 
Храните как вам удобно - интерфейсы бывают разные, если это вообще глобальные - то в один файл в корне, но таких на самом деле обычно мало и больше тайп-конвертеры.
Чаще всего интерфейсы описывают какие-то сущности, кладите их туда же где и код который отвечает за эти сущности. 
Например если у вас есть стор и в нем какие-то данные описанные интерфейсами - кладите рядом с данными и экспортируйте оттуда.
Если есть апи которое возвращает данные и для этих данных есть интерфейсы - кладите рядом с апи. И так далее.
Можно прямо в файлах с логикой, можно рядом в файле чисто с интерфейсами. Мне удобнее все в одном - так как если что-то меняется в интерфейсе то обычно меняется вместе с логикой.