【发布时间】:2021-07-11 08:46:47
【问题描述】:
我们在 proptypes 中完成了相当大的组件库,并且我们正在转向 typescript。
因此,当我将 .jsx 组件移动为 .tsx 组件时,导入的 .jsx 组件突然开始抛出打字错误,导入的组件目前没有任何问题,我不能只是重写它的打字稿到处都在使用,目前它会比付出更多的努力。
为了解决这个问题,我做了以下操作(删除了很多中间代码)
import MyReactComponent from 'path/to/component';
const FixedMyReactComponent: any = MyReactComponent;
return <FixedMyReactComponent/>
它可以工作,我的错误消失了,但我觉得这很烦人,我宁愿不必制作 FixedMyReactComponent 并在本地为其设置类型,并且(正如我已经说过的)我不想要现在花时间解决打字稿不理解我的组件的事实,所以我想找到一些方法来全局告诉打字稿忽略你从 js / jsx 得到的类型错误,只报告来自 .ts 的错误/.tsx.
我想应该是这样的
declare module '*.jsx' {
var _: React.Component<any, any>;
export default _;
}
但这似乎没有我想要的效果。
【问题讨论】:
-
你可以试试
JSX.Element -
@antoineso 嘿,我澄清了问题,据我了解,您建议我使用 JSX.Element 而不是我认为不错的任何东西,但它本身并不是使用任何困扰我的东西,它必须通过声明一个看起来非常hacky的新变量在组件中本地完成。我想要某种全局解决方案,这样我就不必制作 FixMyReactComponent 而不必花时间让我的经典 react proptype 验证组件与 typescript 组件配合得很好,因为我现在没有时间。
-
@jimmy 不,我现在不想让 proptypes 文件成为打字稿文件。我想在打字稿文件中使用 proptypes 文件。这给了我一个错误,除非我做了 MyComp2 any = MyComp - 我发现这不优雅,并且希望能够在全局级别上说 - 当将 proptypes 组件导入打字稿组件时,打字稿编译器将 proptypes 组件视为类型任何 - 当然假设 proptypes 库将处理它自己的 proptypes 文件。如果这可能存在问题并产生广泛的副作用,请权威地评论原因。
-
我不确定您遇到的错误是否与整个 TSX 和 JSX 有关。作为 POC,我可以将带有 proptypes 的 .JSX 组件导入到 .TSX 组件中,而无需添加诸如
:any之类的类型。我可以将道具传递给它并且没有错误。也许需要发布更多代码。
标签: reactjs typescript