typescript - Crear tipo unión a partir de const de enums
Dado el siguiente patrón donde se crea una constante a partir de un conjunto de enumeraciones:
enum ServiceKeys {
SERVICE1 = 'Service1',
SERVICE2 = 'Service2',
}
enum Service1Actions {
ADD = 1,
}
enum Service2Actions {
DELETE = 1,
}
const serviceActions = {
[ServiceKeys.SERVICE1]: Service1Actions,
[ServiceKeys.SERVICE2]: Service2Actions,
}
Me gustaría producir un tipo de unión de todos los enums en el const que sea equivalente a:
type AnyServiceAction = Service1Actions | Service2Actions;
El objetivo final es usar este tipo para crear una configuración. He reducido mi código a su forma más simple para demostrarlo, pero básicamente así es como se supone que debe funcionar. Por supuesto, en su forma original, hay muchas más propiedades asociadas a la acción especificada.
class Entry {
public readonly action: AnyServiceAction | null;
constructor(action: AnyServiceAction = null) {
this.action = action;
}
}
Y así se construye la configuración de esta manera:
class Config {
public readonly [ServiceKeys.SERVICE1]: Entry[] = [
new Entry(serviceActions[ServiceKeys.SERVICE1].ADD),
];
}