Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

建议ts strict模式打开@typescript-eslint/explicit-function-return-type规则检查,关闭consistent-return #37

Open
franckchen opened this issue Jan 26, 2021 · 5 comments

Comments

@franckchen
Copy link
Contributor

franckchen commented Jan 26, 2021

强烈建议

@typescript-eslint/explicit-function-return-type 真的很好,现在配置项也很高级了, 不会增加额外的负担。 tsconfig中的noImplicitReturns其实要求的也仅仅是函数有完整的返回,并未要求定义时指定返回类型,经常出现代码风格不统一。
建议在严格模式下打开@typescript-eslint/explicit-function-return-type, 强化、统一代码风格。而且代码可读性也提升了,看了函数签名就知道函数主要作用了。很好的, 没理由off

建议

js规则strict中规定了consistent-return为error.充分表明了希望对函数的返回类型有强校验,非常合理
但是在ts中返回类型是可推断的, 这个时候consistent-return似乎意义就不大了,感觉可以关闭。

认同的话,将PR

@otakustay
Copy link
Member

这条我觉得值得讨论一下,主要考虑有:

  1. 类型共享问题,有些函数它会返回与某个类型相同的结构,但那个类型没有export出来给用,就可能要自己重新定义一个
  2. 长度问题,一加返回类型可能就超一行的长度了,就要换行了,一换行就要每个参数都换行了
  3. 历史代码的问题,从我看过的TS代码来说,做了返回类型声明的非常少
  4. 常量数组问题,写return [x, y, [a, b ]] as const要比弄个类型出来方便很多

@otakustay
Copy link
Member

@Justineo @errorrik

@franckchen
Copy link
Contributor Author

很有道理。确实可能会增加一定的负担。

@otakustay
Copy link
Member

非常感谢,另外我@typescript-eslint/eslint-plugin的说明,有很多规则是覆盖了eslint原有规则的,你是否有兴趣提个代码把这些都配置一下~

@franckchen
Copy link
Contributor Author

franckchen commented Jul 28, 2021

感兴趣的。我可以统一汇总搞一下的,项目对于ts依赖比较重, 也苛求一套合理的配置规范开发。近期找个时间统一梳理一下发PR
另外对于整体推eslint配置有一些技术上的规划,比如将eslint升级,将近期更新规则统一梳理引入, ts兼容到4.3,eslint-plugin-unicorn规则引入一部分等等的。会持续搞的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants