Estoy creando una función de manejo de temas.
La función que tiene un parámetro de desiredColor
. Quiero pasar el argumento para que sea solo una de las claves de la interfaz proporcionada como tipo para los colores subyacentes.
¿Hay alguna forma de restringir el desiredColor
para que sea solo uno de los valores clave de la interfaz subyacente?
(¿hay alguna manera de hacer esto sin tener que mantener una enumeración adyacente?)
const handleThemeColors = (mode: ThemeMode): any => { const colorsHandler = (desiredColor: Array<keyof PaletteColors>) => // goal ^ desiredColor can be either: blueDark, blueMain, or blueLight { switch (mode) { case 'light': return colorsLight[desiredColor]; default: return colorsDark; } }; ... }
interface PaletteColors { blueDark: string; blueMain: string; blueLight: string; } const colorsLight: PaletteColors = { blueDark: 'rgba(2, 189, 185,1)', blueMain: 'rgba(0, 203, 198,1)', blueLight: 'rgba(147, 231, 229,1)' }
Seguramente, es tan simple como
const colorsHandler = (desiredColor: keyof PaletteColors) =>