I'd like to do something similar to below with labelled tuples and wondering it this posible in TS4 yet
type stringProperties<T extends {}> = {[k in keyof T]: string}
This would mean that I could create a type
[foo: string, bar: string, baz:string]
from [foo: boolean, bar: number, baz: any]
At the moment I'm missing the way to generically capture the label (its not present in keyof) and not sure how to add another label:type pair to an existing tuple type.
I'm aware of the technique below to prepend to an unlabelled tuple but in this case the label will be set as first
.
export type Prepend<E, T extends any[]> =
((first: E, ...args: T) => any) extends ((...args: infer U) => any)
? U
: never