сделать другой union с capitalize? :)
type IconsName = 'accessible';
type Props = {
name: IconsName;
};
const iconsCache:
| {
[key in IconsName]: React.LazyExoticComponent<
React.ComponentType<unknown>
>;
}
| {} = {};
const Icon = ({ name }: Props) => {
const ComponentName = name.charAt(0).toUpperCase() + name.slice(1);
if (!iconsCache[ComponentName]) {
iconsCache[ComponentName] = React.lazy(
() => import(`./Icons/${ComponentName}`)
);
}
const Component = iconsCache[ComponentName];
return Component ? (
<React.Suspense fallback={null}>
<Component />
</React.Suspense>
) : null;
};
на строчке const ComponentName = name.charAt(0).toUpperCase() + name.slice(1); мы получаем тип string и дальше он ругается, что он не подходит к моему union - что логично. Можно как-то изящно решить это в типе объекта iconsCache?
Можно сделать тип с Сapitalize
благодарю! я примерно так и сделал в итоге :))) спасибо большое!
Обсуждают сегодня