我有一个字符串类型的文字,格式为type MyType = 'str1' | 'str2' | 'str3'
,我希望我的一个道具只接受这种类型,但是我不知道如何告诉PropTypes。
我尝试使用propTypes.oneOf(['str1', 'str2', 'str3'])
,但是打字稿将其推断为普通字符串,这是我不想要的。
答案 0 :(得分:4)
由于这是使用TypeScript进行类型检查的,因此您不要尝试在React运行时级别(propTypes
)上进行操作,而是在TypeScript级别上进行操作。
您的组件应在其props类型中使用字符串文字类型:
type MyComponentProps = {
propName: MyType;
}
然后,如果它是类组件:
class MyComponent extends React.Component<MyComponentProps, /*...your state type here...*/> {
// ...
}
或者如果您使用的是功能组件:
const MyComponent: React.FC<MyComponentProps> = ({propName}) => {
// ...
};