JSX转TSX时如何将父级PropTypes正确映射到子元素类型定义
问题解答
- 原有PropTypes定义存在错误
子级属性的类型声明语法不正确,PropTypes.string.createdDate、PropTypes.string.modifiedDate属于非法写法:PropTypes.string上不存在createdDate、modifiedDate属性,这段代码实际运行时会抛出异常。正确的子级类型声明应该和父级保持一致,用PropTypes.string或PropTypes.string.isRequired声明即可。 - 从代码设计意图来看,你想要让子级communication对象的属性类型和父级一致,都是string类型的创建时间、修改时间字段,只是原有PropTypes的错误写法导致实际逻辑不符合预期。
- 你给出的TypeScript类型定义可以作为解决方案,完全匹配你想要实现的类型约束。如果想要进一步优化可维护性,还可以把重复的字段抽成公共类型:
// 抽离重复的日期字段类型,后续修改只需调整一处 type BaseDateMeta = { createdDate: string; modifiedDate: string; } type Props = BaseDateMeta & { communications: BaseDateMeta[]; }
内容的提问来源于stack exchange,提问作者Maxrain
相关产品推荐
相关产品推荐

