TypeScript: Depend Only on What You Need

This is a problem that is not unique to TypeScript, although it is perhaps easier to solve in TypeScript than in many other languages. It all comes down to one of the fundamental and fractal units of architecture… depend only on what you need. There are two things that make this a hard principle toContinue reading “TypeScript: Depend Only on What You Need”

TypeScript Using Classes as Interfaces

The practice of using classes as interfaces in TypeScript is most commonly promoted in the Angular style guide, which says (emphasis mine): Consider using a class instead of an interface. The recommendation is to think about using a concrete class as an interface using the implements keyword. I am hoping to convince you to doContinue reading “TypeScript Using Classes as Interfaces”

Signs You Broke the Interface Segregation Principle

I have written quite a lot about how to follow SOLID principles, but one thing that can be useful is examples of where a principle is not being followed. What does your code look like when it wants to tell you something? Here are the signs that you broke the Interface Segregation Principle (ISP). HereContinue reading “Signs You Broke the Interface Segregation Principle”

Test-Driven Development and Duplication

I have run a good number of test-driven development coding dojos (and behaviour-driven development ones), and participated in plenty of them too. The most common errors I have found can be classified as: Trying to find abstractions too early Drastic code changes under the banner of “refactoring” Both of these problems are solved by practisingContinue reading “Test-Driven Development and Duplication”

Object Orientation Isn’t Just Objects

When dealing with object-oriented design, it is all too easy to fixate on the objects themselves. In a way, the objects are highly visible and very tangible. The problem with this fixation is that there is an equally important, but harder to visualise partner to all of these objects, and that is the relationships. IContinue reading “Object Orientation Isn’t Just Objects”

Programming Books Should Go Beyond Syntax

When I was invited to write Pro TypeScript for Apress, the pitch I prepared with my ace Editor, Gwenan, included a unique selling point. That USP was to go beyond the normal syntactical lessons of how to write various expressions using the programming language and talk in reasonable detail about how to apply some designContinue reading “Programming Books Should Go Beyond Syntax”