I usually try to keep flow function types separate from their implementation. It\'s a slightly more readable when I write:
type Fn = string => string; const a
type H = (input: T) => T; const h2:H<*> = i => i; const h3:H<*> = i => i; const hString: string = h3('apple'); const hNumber: number = h2(7);