缺少 return 函数类型 - 在反应(打字稿)代码中
Missing return type on function - in react (typescript) code
在我的 App.tsx 中,我得到了这个:
- 在 function.eslint(@typescript-eslint/explicit-function-return-type)
上缺少 return 类型
在我的主要 class 组件中,我得到了这些:
- 方法定义中缺少可访问性修饰符 render.eslint(@typescript-eslint/explicit-member-accessibility)
- 在 function.eslint(@typescript-eslint/explicit-function-return-type)
上缺少 return 类型
我正在使用 React 和 TypeScript。
对于 linter,我使用 ESLint 和代码格式化 Prettier。
我找到了这个信息:https://github.com/typescript-eslint/typescript-eslint/blob/v1.6.0/packages/eslint-plugin/docs/rules/explicit-function-return-type.md,但我不知道如何以及在哪里应用它。
App.tsc
class Main extends Component {
render() {
return (
<Router>
<div>
<Link to="/">Home</Link>
<br />
<Link to="/component1">Component1</Link>
<br />
<Link to="/component2">Component2</Link>
<Route exact path="/" render={() => <h1>Home Page</h1>} />
<Route path="/component1" component={Component1} />
<Route path="/component2" component={Component2} />
</div>
</Router>
);
}
}
Component1.tsc
interface Props {
number: number;
onNumberUp: any;
onNumberDown: any;
}
const Component1 = (props: Props): JSX.Element => {
return (
<div>
<h1>Component1 content</h1>
<p>Number: {props.number}</p>
<button onClick={props.onNumberDown}>-</button>
<button onClick={props.onNumberUp}>+</button>
</div>
);
};
const mapStateToProps = (state: any) => {
return {
number: state.firstReducer.number,
};
};
const mapDispachToProps = (dispach: any) => {
return {
onNumberUp: () => dispach({ type: 'NUMBER_UP' }),
onNumberDown: () => dispach({ type: 'NUMBER_DOWN' }),
};
};
Reducer 和 action 在不同的文件夹中。
组件 1 和组件 2 相似。
有人知道如何解决这个错误吗?
Missing accessibility modifier on method definition render.eslint(@typescript-eslint/explicit-member-accessibility)
辅助功能修饰符类似于 public/private/protected。对于渲染,这应该是 public.
所以在 render() 中添加单词 public:
class Main extends Component {
public render() {
...
}
}
Missing return type on function.eslint(@typescript-eslint/explicit-function-return-type)
你不应该在这里出现那个错误。这是告诉你添加一个 return 类型来渲染,但是因为你已经扩展了 React.Component 它应该能够从类型定义中加载类型。
您是否已将@types/react & @types/react-dom 添加到您的项目中?
如果没有,npm i -D @types/react @types/react-dom
看起来你的 redux 代码也需要 @types/redux
: (npm i -D @types/redux
)
从 'redux';
导入 { Dispatch }
const mapDispatchToProps = (dispatch: Dispatch<any>) => {
return {
onNumberUp: () => dispatch({ type: 'NUMBER_UP' }),
onNumberDown: () => dispatch({ type: 'NUMBER_DOWN' }),
};
};
最后说明 - 我不喜欢 ESLint 中的 public/private 访问器规则。我只是禁用它。更多信息(第 1 点):https://medium.com/@martin_hotell/10-typescript-pro-tips-patterns-with-or-without-react-5799488d6680
在我的 App.tsx 中,我得到了这个:
- 在 function.eslint(@typescript-eslint/explicit-function-return-type) 上缺少 return 类型
在我的主要 class 组件中,我得到了这些:
- 方法定义中缺少可访问性修饰符 render.eslint(@typescript-eslint/explicit-member-accessibility)
- 在 function.eslint(@typescript-eslint/explicit-function-return-type) 上缺少 return 类型
我正在使用 React 和 TypeScript。 对于 linter,我使用 ESLint 和代码格式化 Prettier。
我找到了这个信息:https://github.com/typescript-eslint/typescript-eslint/blob/v1.6.0/packages/eslint-plugin/docs/rules/explicit-function-return-type.md,但我不知道如何以及在哪里应用它。
App.tsc
class Main extends Component {
render() {
return (
<Router>
<div>
<Link to="/">Home</Link>
<br />
<Link to="/component1">Component1</Link>
<br />
<Link to="/component2">Component2</Link>
<Route exact path="/" render={() => <h1>Home Page</h1>} />
<Route path="/component1" component={Component1} />
<Route path="/component2" component={Component2} />
</div>
</Router>
);
}
}
Component1.tsc
interface Props {
number: number;
onNumberUp: any;
onNumberDown: any;
}
const Component1 = (props: Props): JSX.Element => {
return (
<div>
<h1>Component1 content</h1>
<p>Number: {props.number}</p>
<button onClick={props.onNumberDown}>-</button>
<button onClick={props.onNumberUp}>+</button>
</div>
);
};
const mapStateToProps = (state: any) => {
return {
number: state.firstReducer.number,
};
};
const mapDispachToProps = (dispach: any) => {
return {
onNumberUp: () => dispach({ type: 'NUMBER_UP' }),
onNumberDown: () => dispach({ type: 'NUMBER_DOWN' }),
};
};
Reducer 和 action 在不同的文件夹中。
组件 1 和组件 2 相似。
有人知道如何解决这个错误吗?
Missing accessibility modifier on method definition render.eslint(@typescript-eslint/explicit-member-accessibility)
辅助功能修饰符类似于 public/private/protected。对于渲染,这应该是 public.
所以在 render() 中添加单词 public:
class Main extends Component {
public render() {
...
}
}
Missing return type on function.eslint(@typescript-eslint/explicit-function-return-type)
你不应该在这里出现那个错误。这是告诉你添加一个 return 类型来渲染,但是因为你已经扩展了 React.Component 它应该能够从类型定义中加载类型。
您是否已将@types/react & @types/react-dom 添加到您的项目中?
如果没有,npm i -D @types/react @types/react-dom
看起来你的 redux 代码也需要 @types/redux
: (npm i -D @types/redux
)
从 'redux';
const mapDispatchToProps = (dispatch: Dispatch<any>) => {
return {
onNumberUp: () => dispatch({ type: 'NUMBER_UP' }),
onNumberDown: () => dispatch({ type: 'NUMBER_DOWN' }),
};
};
最后说明 - 我不喜欢 ESLint 中的 public/private 访问器规则。我只是禁用它。更多信息(第 1 点):https://medium.com/@martin_hotell/10-typescript-pro-tips-patterns-with-or-without-react-5799488d6680