Favoring object composition over inheritance goes back over 20 years to the Gang of Four. The pitfalls of inheritance in nearly every situation has been stated many times, from the fragile base class problem, to overly-tight coupling. In your REST service example, you’ve coupled angular’s http protocol to every service in the app (as well as every url). Considering angular just added HttpClient in 4.2, pretty much all of your services will have to change at the same time if you wanted to switch. Oh and, the new HttpClient makes everything in that RestService obsolete anyways, since auth headers can be added with an interceptor. Tower of Heroes doesn’t recommend inheritance, and the angular docs even mention the pitfalls of using component inheritance in their dependency injection docs. So it’s rather nefarious to call inheritance a “best practice” here when it contradicts what most programmers consider an anti-pattern.