我是TypeScript的新手。我有一个使用styled-components
的组件,我想将其转换为TypeScript
。
import React from 'react'
import PropTypes from 'prop-types'
import styled from 'styled-components'
const propTypes = {
name: PropTypes.string.isRequired // https://material.io/tools/icons/?style=baseline
}
const Icon = styled(({name, className, ...props}) => <i className={`material-icons ${className}`} {...props}>{name}</i>)`
font-size: ${props => props.theme.sizeLarger};
`
Icon.propTypes = propTypes
export default Icon
我知道可以用 interface
取代我的 propTypes
interface Props {
name: string
}
然而,TypeScript 抱怨我没有声明 `className`。问题是,我理想情况下希望将 `interface` 用作开发人员可以提供的 props 的规范,而无需像 `className` 或 `theme` 这样的 props 声明,这些 props 是由 `styled-components` 等库注入的。
我该如何正确地将此组件转换为 TypeScript?
className
似乎既多余又具有误导性,不是吗?这会告诉组件的潜在用户他们可以设置一个className
属性,而在这种情况下,该组件将不能正常工作,对吧? - artooras