Estoy importando el archivo, pero no puedo dar el tipo de archivo, ¿cómo puedo solucionar este problema?
import { capitalize } from "utils"; import * as Icons from "./"; type IconType = { name: string; }; const icon = ({ name, ...props }: IconType) => { const newName = capitalize(name); if (!Icons[newName]) return null; const CustomIcon = Icons[newName]; return <CustomIcon {...props} />; }; export default icon;
Probablemente pueda solucionar su problema escribiendo Icons[newName as keyof Icons]
.
Sin embargo, tiene muchas malas prácticas en su código que debe corregir:
import * as icons from "./pathToIcons";
. La importación por index.ts solo debería ocurrir si se importa desde fuera de la misma carpeta;const icon = (...)
Un componente debe comenzar con letra mayúscula, const Icon = (...)
;{ name, ...props }: IconType
Esto es incoherente, porque su tipo IconType
solo tiene un name
de atributo, por lo tanto, en su caso, TypeScript debería inferir props typeof never
. Probablemente quieras que interface IconProps extends CustomIconProps { name: string }