不能将 React Icons 组件用作对象值打字稿
Cant use React Icons component as an object value typescript
我正在使用 TypeScript 和 React 开发一个个人网站,对于我的页脚,我通过一组对象进行映射,每个对象都有一个 url 属性,以及一个图标 属性。 Icon 属性 应该有多个不同的 React Icons 作为值,这样通过每次迭代,我可以显示一个不同的 Icon。当我最初在 javascript 中实现它时,我的代码工作得很好,但是在将我的代码库切换到 typescript 之后,出现了这个错误:
"Parsing error: '>' expected.eslint
'FaGithub' refers to a value, but is being used as a type here. Did you mean 'typeof FaGithub'?ts(2749)"
这是我目前使用的打字稿实现。我试过删除尖括号,这消除了错误,但在通过数组映射时我无法实际显示图标。如果有任何建议,我将不胜感激。
const socialIcons: { icon: IconType, url: string }[] = [
{
icon: <FaGithub />,
url: "./"
},
{
icon: <FaLinkedin />,
url: "./"
},
{
icon: <FaTwitter />,
url: "./"
},
{
icon: <FaInstagram />,
url: "./"
},
{
icon: <FaFacebook />,
url: "./"
},
]
{socialIcons.map((icons, index) => {
const {icon, url} = icons;
return (
<a href={url} key={index} target="_blank" rel="noopener noreferrer">
{icon}
</a>
);
})}
这是 socialIcons 数组最初在常规 javascript 中的样子。
const socialIcons = [
{
icon: <FaGithub />,
url: "./"
},
{
icon: <FaLinkedin />,
url: "./"
},
{
icon: <FaTwitter />,
url: "./"
},
{
icon: <FaInstagram />,
url: "./"
},
{
icon: <FaFacebook />,
url: "./"
},
]
我想出了一个解决方案,我需要做的就是将文件扩展名从 .ts 更改为 .tsx,并将值的类型设置为 JSX.Element 以输入反应组件作为对象中的值而不打字稿编译器错误。
我正在使用 TypeScript 和 React 开发一个个人网站,对于我的页脚,我通过一组对象进行映射,每个对象都有一个 url 属性,以及一个图标 属性。 Icon 属性 应该有多个不同的 React Icons 作为值,这样通过每次迭代,我可以显示一个不同的 Icon。当我最初在 javascript 中实现它时,我的代码工作得很好,但是在将我的代码库切换到 typescript 之后,出现了这个错误:
"Parsing error: '>' expected.eslint 'FaGithub' refers to a value, but is being used as a type here. Did you mean 'typeof FaGithub'?ts(2749)"
这是我目前使用的打字稿实现。我试过删除尖括号,这消除了错误,但在通过数组映射时我无法实际显示图标。如果有任何建议,我将不胜感激。
const socialIcons: { icon: IconType, url: string }[] = [
{
icon: <FaGithub />,
url: "./"
},
{
icon: <FaLinkedin />,
url: "./"
},
{
icon: <FaTwitter />,
url: "./"
},
{
icon: <FaInstagram />,
url: "./"
},
{
icon: <FaFacebook />,
url: "./"
},
]
{socialIcons.map((icons, index) => {
const {icon, url} = icons;
return (
<a href={url} key={index} target="_blank" rel="noopener noreferrer">
{icon}
</a>
);
})}
这是 socialIcons 数组最初在常规 javascript 中的样子。
const socialIcons = [
{
icon: <FaGithub />,
url: "./"
},
{
icon: <FaLinkedin />,
url: "./"
},
{
icon: <FaTwitter />,
url: "./"
},
{
icon: <FaInstagram />,
url: "./"
},
{
icon: <FaFacebook />,
url: "./"
},
]
我想出了一个解决方案,我需要做的就是将文件扩展名从 .ts 更改为 .tsx,并将值的类型设置为 JSX.Element 以输入反应组件作为对象中的值而不打字稿编译器错误。