Combining TypeScript utility types