ITADN
eslint-functional/eslint-plugin-functional
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

eslint-logo

eslint-plugin-functional

npm version Release Coverage Status semantic-release code style: prettier MIT license GitHub Discussions

一个 ESLint 插件,用于在 JavaScript 和 TypeScript 中禁用变异并推广函数式编程。

捐赠

任何捐赠都将不胜感激。😄

企业用户

eslint-plugin-functional 作为 Tidelift 订阅服务的一部分提供。

Tidelift 正与 eslint-plugin-functional 的维护者以及不断壮大的开源维护者网络合作, 确保您的开源软件供应链现在及未来都符合企业标准。 了解更多。

入门指南

请参阅我们的入门指南

规则集

本插件提供以下规则集。

预设:

  • Strict (configs.strict)
    强制执行旨在严格实施函数式编程的推荐规则。

  • Recommended (configs.recommended)
    目标与 strict 预设相同,但稍显宽松,允许类函数式编码风格, 并能更好地与非函数式第三方库集成。

  • Lite (configs.lite)
    适合函数式编程新手或正在转换大型代码库的用户。

分类:

  • Currying (configs.currying)
    JavaScript 函数支持一些与柯里化函数不兼容的语法。为了强制执行柯里化, 应禁止使用这些语法。

  • No Exceptions (configs.noExceptions)
    函数式编程风格不使用运行时异常。相反,表达式通过产生值来指示错误。

  • No Mutations (configs.noMutations)
    防止对任何数据进行变更,因为那不符合函数式

  • 无其他范式 (configs.noOtherParadigms)
    JavaScript 是多范式的,不仅允许函数式,还允许面向对象以及其他编程风格。 为了推广函数式风格,应防止使用其他范式风格。

  • 无语句 (configs.noStatements)
    在函数式编程中,一切都是产生值的表达式。 JavaScript 有很多语法仅仅是语句,不产生值。 为了推广函数式风格,必须防止使用这些语法。

  • 风格 (configs.stylistic)
    强制实施可被视为更函数式的代码风格。

其他:

  • 全部 (configs.all)
    启用此插件中定义的所有规则。

  • 关闭 (configs.off)
    禁用此插件中定义的所有规则。

  • 禁用类型检查 (configs.disableTypeChecked)
    禁用所有需要类型信息的规则。

  • 外部原生推荐 (configs.externalVanillaRecommended)
    配置推荐的 vanilla ESLint 规则。

  • 外部 TypeScript 推荐 (configs.externalTypeScriptRecommended)
    配置推荐的 TypeScript ESLint 规则。 启用此规则集也将启用原生规则集。

以下部分 详细介绍了每个规则集启用了哪些规则。

规则

💼 在以下配置中启用。
⚠️ 在以下配置中设置为警告。
🚫 在以下配置中禁用。
badge-curryingcurrying 配置中设置。
☑️ 在 lite 配置中设置。
badge-noExceptionsnoExceptions 配置中设置。
badge-noMutationsnoMutations 配置中设置。
badge-noOtherParadigmsnoOtherParadigms 配置中设置。
badge-noStatementsnoStatements 配置中设置。
✅ 在 recommended 配置中设置。
🔒 在 strict 配置中设置。
🎨 在 stylistic 配置中设置。
🔧 可通过 --fix CLI 选项 自动修复。
💡 可通过 编辑器建议 手动修复。
💭 需要 类型信息
❌ 已弃用。

Currying

名称描述💼⚠️🚫🔧💡💭
functional-parameters强制使用函数式参数。badge-currying ☑️ ✅ 🔒💭

No Exceptions

名称描述💼⚠️🚫🔧💡💭
no-promise-reject禁止拒绝 Promise。
no-throw-statements禁止抛出异常。☑️ badge-noExceptions ✅ 🔒💭
no-try-statements禁止 try-catch[-finally] 和 try-finally 模式。badge-noExceptions 🔒☑️ ✅

禁止突变

名称描述💼⚠️🚫🔧💡💭
immutable-data强制将数据视为不可变。☑️ badge-noMutations ✅ 🔒💭
no-let禁止使用可变变量。☑️ badge-noMutations ✅ 🔒
prefer-immutable-types要求函数参数被类型化为特定的不可变性☑️ badge-noMutations ✅ 🔒🔧💡💭
prefer-readonly-type优先使用只读类型而非可变类型。🔧💭
type-declaration-immutability基于模式强制类型的不可变性。☑️ badge-noMutations ✅ 🔒🔧💡💭

无其他范式

名称描述💼⚠️🚫🔧💡💭
no-class-inheritance禁止在类中使用继承。☑️ badge-noOtherParadigms ✅ 🔒
no-classes禁止使用类。badge-noOtherParadigms ✅ 🔒☑️
no-mixed-types限制类型,使其仅允许包含同种类型的成员。☑️ badge-noOtherParadigms ✅ 🔒💭
no-this-expressions禁止访问 this。badge-noOtherParadigms 🔒☑️ ✅

无语句

名称描述💼⚠️🚫🔧💡💭
no-conditional-statements禁止条件语句。badge-noStatements ✅ 🔒☑️💭
no-expression-statements禁止表达式语句。badge-noStatements ✅ 🔒☑️💭
no-loop-statements禁止命令式循环。☑️ badge-noStatements ✅ 🔒
no-return-void禁止不返回任何值的函数。☑️ badge-noStatements ✅ 🔒💭

风格

Name                      Description💼⚠️🚫🔧💡💭
prefer-property-signaturesPrefer property signatures over method signatures.🎨💭
prefer-tacitReplaces x => f(x) with just f.🎨💡💭
readonly-typeRequire consistently using either readonly keywords or Readonly<T>🎨🔧💭

外部推荐规则

除上述规则外,我们还推荐了一些其他规则。

这些规则包含在 外部推荐 规则集中。

原生规则

  • no-var
    没有这条规则,仍然可以创建可变的 var 变量。

  • no-param-reassign
    不允许重新赋值函数参数,它们应被视为常量。

  • prefer-const
    当从命令式代码风格转换为函数式风格时,这条规则提供了有用的修复器。

TypeScript 规则

贡献

查看我们的贡献指南

先前工作

本项目始于 tslint-immutable 的移植, 而该项目最初受 eslint-plugin-immutable 的启发。