Dependency injection (или внедрение зависимостей) — это одна из реализаций принципа ООП под названием Inversion of Control, название которой впервые дал Мартин Фаулер. DI предоставляет общий механизм управления зависимостями, поэтому объектам не нужно знать, как и откуда они получат свои зависимости. Как во многих объектно-ориентированных языках (например, Java), внедрение зависимостей можно реализовать и в Typescript. В этой статье мы на примере мини-фреймворка для фронтенда увидим, как легко и быстро можно создать простой DI-контейнер, настроить механизм внедрения зависимостей, а также использовать для этой цели Typescript-декораторы и Reflect API.