我在Typescript项目中是有状态的React组件。我使用@typescript-eslint/parser
和@typescript-eslint/eslint-plugin
用ESLint对其进行了整理。我已启用规则@typescript-eslint/explicit-function-return-type
。
我的组件看起来与此类似:
interface Props = {
name: string;
}
interface State = {
score: number
}
class Person extends Component<Props, State> {
state = {
score: 2,
};
componentDidMount() {
...
}
render() {
...
}
}
在上述组件中,我在componentDidMount
和render
方法上收到ESLint错误:
Missing return type on function - @typescript-eslint/explicit-function-return-type
我总体上很喜欢lint规则,但是可以肯定的是,我不必为所有这些React方法都声明一个返回类型。我已经安装了@types/react
和@types/react-dom
,所以这些返回类型是否已经涵盖?
答案 0 :(得分:1)
我通过使用.eslintrc.json
将规则添加到{ "allowTypedFunctionExpressions": true }
中来使它起作用了
.eslintrc.json
{
"parser": "@typescript-eslint/parser",
"extends": ["plugin:@typescript-eslint/recommended"],
"plugins": ["@typescript-eslint"],
"rules": {
"@typescript-eslint/explicit-function-return-type": [
"error",
{ "allowTypedFunctionExpressions": true }
]
}
}
版本
"@typescript-eslint/eslint-plugin": "^1.10.2",
"@typescript-eslint/parser": "^1.10.2",
"eslint": "^6.0.0",
答案 1 :(得分:1)
尝试将呈现函数的返回类型写为
render(): JSX.Element {
// render code
}
这对我有用!
答案 2 :(得分:0)
在这里我可能是错的,因为我个人没有使用过{
"Details": {
"ContactData" :{
"CustomerEndPoint" : {
"Address" : "01234567890"
}
}
}
}
,但听起来似乎每个编写的函数(包括生命周期方法)中都需要@typescript-eslint/explicit-function-return-type
。请记住,ESLint和React并不相同。 ESLint只是在您的代码上运行以指出潜在错误。如果您不包含这些return
语句,则React库仍然应该能够正常运行