When to explicitly type functions in TypeScript

How to decide when to type your functions—and when to let TypeScript infer