To try and limit one's use of operations on types, as suggested in the article, is not really great advice in my opinion. Sure, you would not want to actually implement and use a VM in types, but distilling rules about a program into types and then deriving the actual interfaces and signatures from those rules with operations on types? That's quite powerful.<p>TypeScript's type annotations are really a DSL embedded into JavaScript. And they can, and, depending on the problem at hand, <i>should</i> be treated as such.