Hands-On Functional Programming with TypeScript