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()];