I have Theme.ts file like below
export default { COLORS: { DEFAULT: '#172B4D', PRIMARY: '#5E72E4', SECONDARY: '#F7FAFC', } };
In my button component I import above theme file like this –> import argonTheme from "../constants/Theme";
In my button component I want to get access to that color dynamically like this
const { small, shadowless, children, color, style, fontSize } = props; const colorStyle = color && argonTheme.COLORS[color.toUpperCase()];
This line gives me typescript error –> const colorStyle = color && argonTheme.COLORS[color.toUpperCase()];
This is the error I’m getting
Element implicitly has an 'any' type because expression of type 'any' can't be used to index type '{ DEFAULT: string; PRIMARY: string; SECONDARY: string ...
How can I write this line in typescript ?
const colorStyle = color && argonTheme.COLORS[color.toUpperCase()];
Advertisement
Answer
You have to provide a type for the COLORS
object:
// Theme.ts const COLORS: Record<string, string> = { DEFAULT: '#172B4D', PRIMARY: '#5E72E4', SECONDARY: '#F7FAFC', } export default { COLORS }; // Other Component: const color= 'PRIMARY'; const colorStyle = color && COLORS[color.toUpperCase()];