Angular совершает внедрение зависимостей через классы, является ли это убийством самой идеи DI? Ведь мы привязываемся к файлу определенной зависимости, нежели использовать какой-то токен для внедрения.
Так он через токены и работает.
Через класс это типа шорткат, когда объект функции-конструктора используется как объект токена, чтобы меньше кода писать. Это же js, тут классов то нет, они все first-class entity