"interfaces don't have a runtime representation" I was looking for a good way to say that while writing the article, this is a very good way ! Thanks
Also I like that you think about the use of instanceof, I didn't really think of that, but some devs use this condition intensively.
"instaceof" is something I would advise against for any code that might be called from another module.
If you have different modules requiring that same module and they for whatever reason (webpack behavior, node not deduping properly, npm link, different versions, etc), that instanceof will fail and the caller will be left scratching their head as to why their object fails the check.
In JavaScript (and by extension TypeScript), you are best left to duck-typing for run-time checks.