From 32b31f4d3a0fa6cf756fa0bb7a9da0803fbc25e4 Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Sat, 31 Jul 2021 18:28:21 +1200 Subject: [PATCH] docs: update readme for recommended standard rules --- README.md | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index e7cdbf9ba..9c5c31da3 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ [![MIT license](https://img.shields.io/github/license/jonaskello/eslint-plugin-functional.svg?style=flat)](https://opensource.org/licenses/MIT) [![GitHub Discussions](https://img.shields.io/github/discussions/jonaskello/eslint-plugin-functional)](https://github.com/jonaskello/eslint-plugin-functional/discussions) - + An [ESLint](http://eslint.org) plugin to disable mutation and promote functional programming in JavaScript and TypeScript. @@ -262,17 +262,20 @@ Without this rule, function parameters are mutable. This rule is helpful when converting from an imperative code style to a functional one. -### [@typescript-eslint/explicit-function-return-type](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/explicit-function-return-type.md) +### [@typescript-eslint/prefer-readonly](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-readonly.md) -For performance reasons, eslint-plugin-functional does not check implicit return types. So for example this function will return a mutable array but will not be detected: +This rule is helpful when working with classes. -```js -function foo() { - return [1, 2, 3]; -} -``` +### [@typescript-eslint/prefer-readonly-parameter-types](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-readonly-parameter-types.md) + +Functional functions must not modify any data passed into them. +This rule marks mutable parameters as a violation as they prevent readonly versions of that data from being passed in. + +However, due to many 3rd-party libraries only providing mutable versions of their types, often it can not be easy to satisfy this rule. Thus by default we only enable this rule with the "warn" serverity rather than "error". + +### [@typescript-eslint/switch-exhaustiveness-check](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/switch-exhaustiveness-check.md) -To avoid this situation you can enable `@typescript-eslint/explicit-function-return-type`. Now the above function is forced to declare the return type and the mutability will be detected. +Although our [no-conditional-statement](./docs/rules/no-conditional-statement.md) rule also performs this check, this rule has a fixer that will implement the unimplemented cases which can be useful. ## How to contribute