我正在将React项目转换为使用TypeScript,并且我有一个Icon
组件,它接受一个字符串的prop,但应该是一个有效的CSS类名。
我使用React的PropTypes处理此问题的方法是
Icon.propTypes = {
icon: oneOf(Object.keys(css)).isRequired,
}
有没有办法在TypeScript中实现相同的功能,而不是像这样输入字符串文字类型中的每个类名?
interface Props {
icon: "class1" | "class2" | ...
}
答案 0 :(得分:1)
如果您的css
对象类似于:
const css = {
"class1": "something",
"class2": "something",
"classN": "something"
}
然后你可以这样做:
interface Props {
icon: keyof typeof css
}
// fine:
let props: Props = {
icon: "class1"
}
但是这个:
let props: Props = {
icon: "something else"
}
导致错误:
输入' {icon:"其他内容&#34 ;; }'不能分配类型'道具'。
财产类型' icon'是不相容的。
输入'"其他内容"'不能分配给'" class1" | "等级2" | " classN"'