Tengo un tipo como este (en este caso, el usuario sería una interfaz personalizada):
export type ArgumentTypes = string | number | boolean | user;
ahora, me gustaría tener un tipo de
export type ArgumentTypeNames = "string" | "number" | "boolean" | "user";
He intentado buscar a mi alrededor durante un tiempo, pero no he podido encontrar la manera de obtener el nombre. Intenté hacer ${ArgumentTypes}
pero no funcionó.
Soy bastante nuevo en tipos avanzados (asignados, condicionales, etc.), por lo que me encantaría una explicación de la respuesta o de las posibles soluciones.
AFAIK, a partir de la versión actual de TypeScript, no puede hacer eso sin una asignación explícita de string
a "string"
, number
a "number"
, etc. existente en algún lugar de su programa. El mapeo podría verse así:
interface TypeMapping { string: string; number: number; boolean: boolean; user: user; }
Sin embargo, no todo está perdido. Podría hacer de este mapeo la fuente de la verdad y derivar otros tipos de él:
type ArgumentTypeNames = keyof TypeMapping; type ArgumentTypes = TypeMapping[ArgumentTypeNames];