Practical Inversion of Control in TypeScript https://medium.com/@danieldughila/practical-inversion-of-control-in-typescript-42a7364511af