我正在我的React应用程序中集成typescript,它有大量的代码.我有一些应用程序级别的HOC,我将其应用于React组件:
import React from 'react';
import HOC1 from 'app/hocs/hoc1';
import compose from 'recompose/compose;
class MyComponent from React.Component {
...component stuff...
}
export default compose(HOC1())(MyComponent);
Run Code Online (Sandbox Code Playgroud)
但是现在我在我的应用程序中添加了typescript,每当我导入时
import HOC1 from 'app/hocs/hoc1';
Run Code Online (Sandbox Code Playgroud)
它说
TS2307: Cannot find module 'app/hocs/hoc1'.
Run Code Online (Sandbox Code Playgroud)
我不想为所有HOC添加类型定义.什么是解决方案以及为什么我收到此错误?
[编辑]我使用baseUrl
的tsconfig
为好.我的文件夹结构是
/Project/configs/tsconfig
/Project/src/app/hocs
Run Code Online (Sandbox Code Playgroud)
在tsconfig,我已经给了baseUrl
为../src
通过该文档.
另一个Edit 和我的webpack配置看起来像:
{
test: /\.(t|j)sx?$/,
loader: 'happypack/loader?id=jsx-without-proptypes',
include: [
path.resolve(__dirname),
path.resolve(__dirname, '../src'),
],
},
Run Code Online (Sandbox Code Playgroud)
整个webpack配置看起来像
const config = {
context: path.resolve(__dirname, '../src'),
mode: NODE_ENV,
optimization: {
splitChunks: false,
nodeEnv: …
Run Code Online (Sandbox Code Playgroud) 我收到警告“警告:道具类型失败:Object
提供给的类型无效,预期实例为bound checkType
。”
这是我的道具:
FieldTable.propTypes = {
rawData: PropTypes.instanceOf(PropTypes.object).isRequired,
percentCols: PropTypes.arrayOf(PropTypes.string).isRequired,
specialColNames: PropTypes.instanceOf(PropTypes.object).isRequired,
scenarioHeaders: PropTypes.instanceOf(PropTypes.object),
headerHierarchies: PropTypes.arrayOf(PropTypes.object).isRequired
};
Run Code Online (Sandbox Code Playgroud)
它所指的“绑定检查类型”是什么,我应该如何验证我的对象道具以避免此警告?对象本身是从异步调用接收的 JSON 对象,并在其他组件中生成。例如,rawData 对象来自一个组件,该组件允许用户上传 Excel 电子表格,然后将电子表格解析为 JSON 对象。不知道这是否是有用的信息。
感谢您提供任何帮助,尤其是此问题可能引起的任何更深入的讨论。
reactjs eslint react-proptypes eslint-config-airbnb react-props