tengo un objeto
{ foo: "bar", a: "b", roses: "red", }
Me gustaría crear una plantilla literal que me daría las siguientes posibilidades:
"foo=bar" | "a=b" | "roses=red"
Básicamente, clave = valor
Lo que he hecho hasta ahora es:
type Foo = `${keyof typeof obj}=${typeof obj[keyof typeof obj]}`;
Pero esto me da todas las combinaciones posibles:
"foo=bar" | "foo=b" | "foo=red" | "a=bar" | ...
Siento que necesito usar un genérico pero no puedo hacerlo funcionar
Puede usar un tipo mapeado de autoindexación:
const obj = { foo: "bar", a: "b", roses: "red", } as const; type Foo = { [K in keyof typeof obj]: `${K}=${typeof obj[K]}` }[keyof typeof obj];
Esto se evalúa como:
type Foo = "foo=bar" | "a=b" | "roses=red"