Is it possible to infer a Tuple from a key/value mapping ?

Basically it could be a conversion from union type to tuple (like this <https://github.com/microsoft/TypeScript/issues/13298#issuecomment-482330241> )

But I hope for a more elegant and compiler friendly solution like the tuple function suggested by the handbook (<http://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-0.html#example-2>)

```js
interface ParamMapping {
    a: boolean;
    b: string;
    c: 'foo' | 'bar';
}

declare function param<K extends keyof ParamMapping>(...name: K[]): ParamMapping[K];
// posible solutions:
// declare function param<K extends keyof ParamMapping>(...name: K[]): ParamMapping[...K];
// declare function param<K extends keyof ParamMapping>(...name: K[]): ...ParamMapping[K];
// declare function param<K extends (keyof ParamMapping)[]>(...name: K): for P of K : ParamMapping[K];
declare function param(...name: string[]): unknown[];

// typed as unknown[]
const p1 = param('baz', 'qux');

// *should be* typed as [boolean, string]
const p2 = param('a', 'b');

// *should be* typed as [string, 'foo' | 'bar']
const p3 = param('b', 'c');

// *should be* typed as [boolean, string, 'foo' | 'bar']
const p4 = param('a', 'b', 'c');

```

[Playground here](http://www.typescriptlang.org/play/?ssl=1&ssc=1&pln=24&pc=33#code/JYOwLgpgTgZghgYwgAgApynAtgWTgB31AHNkBvAKGWuTgC5kAjAe2YBsI4QBuKmxhgGcwUErxrIEDAOQxW05AB9k0xhmm8AvhQoATCAjYYUMAK4gEYYMxDJ8GbAB4A0sggAPSCF2DkAawgAT2YYNAdcAiIQYgA+AAoAOiSQbAgGZwBtAF0ASgZ0TAjCEgznLN4Aegq7ZkFgRg5kQXZTKxtBOgoq5H1DY2QzCzbbe0KXN08Ib18A4NCC7Dxi6PikhJSsNORM3PzwpajiDLWyyureoygTc0trEfDxjy8ffyCQsMKDklXk1PTsvLINYLIqHUrlLrnAyXa5DO52B6uJ5TF5xWbvEFfaI5bI-dZ-baAuRQNDId6uPafSIlU56aH9Qa3GwIwqJX6bIQiEq7ZDmPwgZgAdxA2V4kOQYEC+Agulovj5AuF2QoCHaYDsAEZkABeFnYOKqOAAL2kABoVABHUzuaQ5MXdABUggAFsxTGxZYwIA6JVKZXLkBkWOxOCBzcJRNEsiq1XYAEw6vVYA1wM0qRi2+3VJ2u92e72+6WyuC+DIRkjm2TyJTp9TR1UgYR2ADMidG+tUaekCEzOkdLrdHqYBclRYDQdYHC44a50UrcmYCmUhqg0nrsfwABY2+EU12M5We3agA)