Building a Plugin System in TypeScript

Letting other people extend your code without it descending into chaos.