TypeScript because it's awesome