Making TypeScript's mapped types work via identity rather than structure | Dark Hacker News