【问题标题】:How eslint requires that variables must be explicitly typedeslint 如何要求必须显式键入变量
【发布时间】:2023-01-23 18:04:00
【问题描述】:

我希望每个变量在声明时都必须有明确的类型。

我应该如何配置eslint?


const a = 10; // Error: Variable a does not explicitly specify a type

const b:number = 10; // Right!

【问题讨论】:

  • 这并不是真正必要的,因为 TypeScript 已经将 10 的类型推断为 number

标签: typescript eslint typescript-eslint


【解决方案1】:

我认为没有这方面的规定。

另一方面,对于精确的逆有一个规则。强制不对推断类型使用类型声明no-inferable-type

您可以看到包含所有规则的列表here

【讨论】:

    【解决方案2】:

    您可以在 .eslintrc.json 中执行以下操作:

    ...
    "@typescript-eslint/no-inferrable-types": 0,
    "@typescript-eslint/typedef": [
        "warn",
        {
            "variableDeclaration": true
        }
    ]
    ...
    

    来自no-inferrable-types 上的文档

    TypeScript 能够从参数、属性和变量的默认值或初始值推断出它们的类型。无需在初始化为布尔值、数字或字符串的那些构造之一上使用显式 : 类型注释。这样做会给代码增加不必要的冗长 - 使其更难阅读 - 在某些情况下可以防止 TypeScript 推断更具体的文字类型(例如 10)而不是更通用的原始类型(例如数字)

    因此,您需要先关闭不可推断类型的规则,然后再设置规则以实现您的目标。

    阅读有关 typedef 规则的更多信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2023-02-10
      • 1970-01-01
      相关资源
      最近更新 更多