tipado - ¿Puedo agregar un prefijo o sufijo a las claves de una interfaz/tipo de TypeScript que se genera programáticamente?
Me pregunto si es posible agregar un prefijo o sufijo a un tipo de TypeScript que utiliza un arreglo de cadenas como sus claves.
type First = {
one: string
two: string
}
type Second = keyof First
type Third = {
[S in Second]: any
}
Con este enfoque Third acepta los atributos one y two con cualquier tipo. Lo cual es increíble, ya que solo necesito cambiar el primer tipo para que los demás también se actualicen.
Ahora quiero un cuarto tipo que sea exactamente igual que Tercero, pero quiero agregar un prefijo a las claves. Como un signo de dólar o algo así.
Resultado deseado:
type Fourth = {
$one: any
$two: any
}
Podría simplemente codificarlo de forma rígida, pero entonces tendría que ajustar el cuarto tipo si el primer tipo ha sido cambiado.
Gracias.
Respuesta #1
TS 4.1 tiene soporte para la reasignación de teclas fácil usando tipos de literales de plantilla:
type First = {
one: string
two: string
}
type Fourth = {
[K in keyof First as `$${K}`]: any
}
Si quisieras usar el tipo original asociado con cada clave en lugar de any (si estás usando TS, después de todo, deberías querer evitar any cuando sea posible), reemplaza
: any
con
: First[K]
