TypeScript Type 属性中的 ESLint 和 snake_case

Posted

技术标签:

【中文标题】TypeScript Type 属性中的 ESLint 和 snake_case【英文标题】:ESLint and snake_case inside TypeScript Type property 【发布时间】:2020-10-26 08:52:37 【问题描述】:

我需要对接口或类型中的属性使用snake_case。我用

设置规则camelcase
'camelcase': ["error", properties: "never"],

因为它mentioned in docs。它不适用于接口和类型,但适用于 JS 对象。

export const test = 
    a_b: 1, // OK. No error
;

export interface ITest 
    a_b: number, // Identifier 'a_b' is not in camel case.eslint(camelcase)


export type TTest = 
    a_b: number, // Identifier 'a_b' is not in camel case.eslint(camelcase)

当我将规则设置为 'off' 时,错误消失,因此该规则适用于 .ts 文件。

那么如何在 TS 中使用 snake_case 呢?谢谢。

【问题讨论】:

【参考方案1】:

我认为该规则不适用于类型,我建议通过在您的 ESLint 中实现以下块来为 TypeScript 文件禁用此规则。


    "rules": 
        "camelcase": ["error"],
    ,
    "overrides": [
        
          "files": ["**/*.ts", "**/*.tsx"],
          "rules": 
            "camelcase": ["off"]
          
        
    ],

一旦我们禁用了该规则,我们就可以引入 @typescript-eslint/eslint-plugin 来应用额外的 linting 规则,它将正确地 lint 接口和类型中的属性。

注意:如果您还没有安装插件和解析器,则必须安装,可以在此处找到说明:https://www.npmjs.com/package/@typescript-eslint/eslint-plugin

参考@typescript-eslint/naming-convention:https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/naming-convention.md


    "plugins": ["@typescript-eslint"],
    "parser": "@typescript-eslint/parser",
    "rules": 
        "camelcase": ["error"],
        "@typescript-eslint/naming-convention": [
            "error",
             "selector": "property", "format": ["snake_case"] 
        ]
    ,
    "overrides": [
        
          "files": ["**/*.ts", "**/*.tsx"],
          "rules": 
            "camelcase": ["off"]
          
        
    ],

【讨论】:

以上是关于TypeScript Type 属性中的 ESLint 和 snake_case的主要内容,如果未能解决你的问题,请参考以下文章

[TypeScript] type、typeof、keyof

TypeScript 可选属性不接受未定义的值

TypeScript中的实用工具类型(Utility Types)

VS Code 中的 Vue Array Prop JSDoc TypeScript 错误:“ArrayConstructor”类型缺少“MyCustomType []”类型中的以下属性

在基于 TypeScript/eslint/Webpack 的构建环境中检测未使用的导出符号

Vue JS 中的数组操作和 Typescript 错误