eslint-config-alloy
Version:
AlloyTeam ESLint 规则
402 lines • 116 kB
JSON
{
"@typescript-eslint/adjacent-overload-signatures": {
"name": "@typescript-eslint/adjacent-overload-signatures",
"value": "error",
"description": "重载的函数必须写在一起",
"reason": "增加可读性",
"badExample": "<span class=\"token keyword\">declare</span> <span class=\"token keyword\">namespace</span> NSFoo1 <span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">export</span> <span class=\"token keyword\">function</span> <span class=\"token function\">foo</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">s<span class=\"token punctuation\">:</span> <span class=\"token builtin\">string</span></span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span>\n <span class=\"token keyword\">export</span> <span class=\"token keyword\">function</span> <span class=\"token function\">foo</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">n<span class=\"token punctuation\">:</span> <span class=\"token builtin\">number</span></span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span>\n <span class=\"token keyword\">export</span> <span class=\"token keyword\">function</span> <span class=\"token function\">bar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span>\n <mark class=\"eslint-error\" data-tip=\"All foo signatures should be adjacent.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/adjacent-overload-signatures)</span>\"><span class=\"token keyword\">export</span> <span class=\"token keyword\">function</span> <span class=\"token function\">foo</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">sn<span class=\"token punctuation\">:</span> <span class=\"token builtin\">string</span> <span class=\"token operator\">|</span> <span class=\"token builtin\">number</span></span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span></mark>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">type</span> TypeFoo1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n <span class=\"token function\">foo</span><span class=\"token punctuation\">(</span>s<span class=\"token punctuation\">:</span> <span class=\"token builtin\">string</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span>\n <span class=\"token function\">foo</span><span class=\"token punctuation\">(</span>n<span class=\"token punctuation\">:</span> <span class=\"token builtin\">number</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span>\n <span class=\"token function\">bar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span>\n <mark class=\"eslint-error\" data-tip=\"All foo signatures should be adjacent.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/adjacent-overload-signatures)</span>\"><span class=\"token function\">foo</span><span class=\"token punctuation\">(</span>sn<span class=\"token punctuation\">:</span> <span class=\"token builtin\">string</span> <span class=\"token operator\">|</span> <span class=\"token builtin\">number</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span></mark>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">interface</span> <span class=\"token class-name\">IFoo1</span> <span class=\"token punctuation\">{</span>\n <span class=\"token function\">foo</span><span class=\"token punctuation\">(</span>s<span class=\"token punctuation\">:</span> <span class=\"token builtin\">string</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span>\n <span class=\"token function\">foo</span><span class=\"token punctuation\">(</span>n<span class=\"token punctuation\">:</span> <span class=\"token builtin\">number</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span>\n <span class=\"token function\">bar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span>\n <mark class=\"eslint-error\" data-tip=\"All foo signatures should be adjacent.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/adjacent-overload-signatures)</span>\"><span class=\"token function\">foo</span><span class=\"token punctuation\">(</span>sn<span class=\"token punctuation\">:</span> <span class=\"token builtin\">string</span> <span class=\"token operator\">|</span> <span class=\"token builtin\">number</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span></mark>\n<span class=\"token punctuation\">}</span>",
"goodExample": "<span class=\"token keyword\">declare</span> <span class=\"token keyword\">namespace</span> NSFoo2 <span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">export</span> <span class=\"token keyword\">function</span> <span class=\"token function\">foo</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">s<span class=\"token punctuation\">:</span> <span class=\"token builtin\">string</span></span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span>\n <span class=\"token keyword\">export</span> <span class=\"token keyword\">function</span> <span class=\"token function\">foo</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">n<span class=\"token punctuation\">:</span> <span class=\"token builtin\">number</span></span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span>\n <span class=\"token keyword\">export</span> <span class=\"token keyword\">function</span> <span class=\"token function\">foo</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">sn<span class=\"token punctuation\">:</span> <span class=\"token builtin\">string</span> <span class=\"token operator\">|</span> <span class=\"token builtin\">number</span></span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span>\n <span class=\"token keyword\">export</span> <span class=\"token keyword\">function</span> <span class=\"token function\">bar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">type</span> TypeFoo2 <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n <span class=\"token function\">foo</span><span class=\"token punctuation\">(</span>s<span class=\"token punctuation\">:</span> <span class=\"token builtin\">string</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span>\n <span class=\"token function\">foo</span><span class=\"token punctuation\">(</span>n<span class=\"token punctuation\">:</span> <span class=\"token builtin\">number</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span>\n <span class=\"token function\">foo</span><span class=\"token punctuation\">(</span>sn<span class=\"token punctuation\">:</span> <span class=\"token builtin\">string</span> <span class=\"token operator\">|</span> <span class=\"token builtin\">number</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span>\n <span class=\"token function\">bar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">interface</span> <span class=\"token class-name\">IFoo2</span> <span class=\"token punctuation\">{</span>\n <span class=\"token function\">foo</span><span class=\"token punctuation\">(</span>s<span class=\"token punctuation\">:</span> <span class=\"token builtin\">string</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span>\n <span class=\"token function\">foo</span><span class=\"token punctuation\">(</span>n<span class=\"token punctuation\">:</span> <span class=\"token builtin\">number</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span>\n <span class=\"token function\">foo</span><span class=\"token punctuation\">(</span>sn<span class=\"token punctuation\">:</span> <span class=\"token builtin\">string</span> <span class=\"token operator\">|</span> <span class=\"token builtin\">number</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span>\n <span class=\"token function\">bar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"@typescript-eslint/array-type": {
"name": "@typescript-eslint/array-type",
"value": "off",
"description": "限制数组类型必须使用 Array<T> 或 T[]",
"reason": "允许灵活运用两者",
"badExample": "",
"goodExample": "",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"@typescript-eslint/await-thenable": {
"name": "@typescript-eslint/await-thenable",
"value": "off",
"description": "禁止对没有 then 方法的对象使用 await",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": true
},
"@typescript-eslint/ban-ts-comment": {
"name": "@typescript-eslint/ban-ts-comment",
"value": "off",
"description": "禁止使用 // @ts-ignore // @ts-nocheck // @ts-check",
"reason": "这种注释本身就是对特殊代码的说明",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"@typescript-eslint/ban-tslint-comment": {
"name": "@typescript-eslint/ban-tslint-comment",
"value": "off",
"description": "禁止使用类似 tslint:disable-next-line 这样的注释",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"@typescript-eslint/ban-types": {
"name": "@typescript-eslint/ban-types",
"value": "off",
"description": "禁止使用指定的类型",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"@typescript-eslint/class-literal-property-style": {
"name": "@typescript-eslint/class-literal-property-style",
"value": ["error", "fields"],
"description": "类的只读属性若是一个字面量,则必须使用只读属性而不是 getter",
"reason": "",
"badExample": "<span class=\"token keyword\">class</span> <span class=\"token class-name\">Foo1</span> <span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">public</span> <span class=\"token keyword\">get</span> <span class=\"token function\"><mark class=\"eslint-error\" data-tip=\"Literals should be exposed using readonly fields.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/class-literal-property-style)</span>\">bar</mark></span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">return</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>",
"goodExample": "<span class=\"token keyword\">class</span> <span class=\"token class-name\">Foo2</span> <span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">public</span> <span class=\"token keyword\">readonly</span> bar <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"@typescript-eslint/class-methods-use-this": {
"name": "@typescript-eslint/class-methods-use-this",
"value": "off",
"description": "在类的非静态方法中,必须存在对 this 的引用",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": true,
"extendsBaseRule": "class-methods-use-this",
"requiresTypeChecking": false
},
"@typescript-eslint/consistent-generic-constructors": {
"name": "@typescript-eslint/consistent-generic-constructors",
"value": "off",
"description": "使用 Map 或 Set 时,必须在构造函数上用泛型定义类型",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"@typescript-eslint/consistent-indexed-object-style": {
"name": "@typescript-eslint/consistent-indexed-object-style",
"value": "off",
"description": "必须使用内置的 Record<K, T> 来描述仅包含可索引成员的接口",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"@typescript-eslint/consistent-type-assertions": {
"name": "@typescript-eslint/consistent-type-assertions",
"value": ["error", { "assertionStyle": "as", "objectLiteralTypeAssertions": "never" }],
"description": "类型断言必须使用 as Type,禁止使用 <Type>,禁止对对象字面量进行类型断言(断言成 any 是允许的)",
"reason": "<Type> 容易被理解为 jsx",
"badExample": "<span class=\"token keyword\">let</span> bar1<span class=\"token punctuation\">:</span> <span class=\"token builtin\">string</span> <span class=\"token operator\">|</span> <span class=\"token builtin\">number</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">const</span> foo1 <span class=\"token operator\">=</span> <mark class=\"eslint-error\" data-tip=\"Use &apos;as string&apos; instead of &apos;&lt;string&gt;&apos;.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/consistent-type-assertions)</span>\"><span class=\"token operator\"><</span><span class=\"token builtin\">string</span><span class=\"token operator\">></span>bar1</mark><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> baz1 <span class=\"token operator\">=</span> <mark class=\"eslint-error\" data-tip=\"Always prefer const x: T = { ... }.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/consistent-type-assertions)</span>\"><span class=\"token punctuation\">{</span>\n bar<span class=\"token punctuation\">:</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span> <span class=\"token keyword\">as</span> object</mark><span class=\"token punctuation\">;</span>",
"goodExample": "<span class=\"token keyword\">let</span> bar2<span class=\"token punctuation\">:</span> <span class=\"token builtin\">string</span> <span class=\"token operator\">|</span> <span class=\"token builtin\">number</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">const</span> foo2 <span class=\"token operator\">=</span> bar2 <span class=\"token keyword\">as</span> <span class=\"token builtin\">string</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> baz2 <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n bar<span class=\"token punctuation\">:</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span> <span class=\"token keyword\">as</span> <span class=\"token builtin\">any</span><span class=\"token punctuation\">;</span>",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"@typescript-eslint/consistent-type-definitions": {
"name": "@typescript-eslint/consistent-type-definitions",
"value": ["error", "interface"],
"description": "优先使用 interface 而不是 type",
"reason": "interface 可以 implement, extend 和 merge",
"badExample": "<span class=\"token keyword\">type</span> <mark class=\"eslint-error\" data-tip=\"Use an `interface` instead of a `type`.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/consistent-type-definitions)</span>\">Foo1</mark> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n foo<span class=\"token punctuation\">:</span> <span class=\"token builtin\">string</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>",
"goodExample": "<span class=\"token keyword\">interface</span> <span class=\"token class-name\">Foo2</span> <span class=\"token punctuation\">{</span>\n foo<span class=\"token punctuation\">:</span> <span class=\"token builtin\">string</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"@typescript-eslint/consistent-type-exports": {
"name": "@typescript-eslint/consistent-type-exports",
"value": "off",
"description": "一致的类型导出语法",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": true
},
"@typescript-eslint/consistent-type-imports": {
"name": "@typescript-eslint/consistent-type-imports",
"value": "error",
"description": "必须使用 import type 导入类型",
"reason": "",
"badExample": "<mark class=\"eslint-error\" data-tip=\"All imports in the declaration are only used as types. Use `import type`.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/consistent-type-imports)</span>\"><span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> Foo <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'./FooType'</span><span class=\"token punctuation\">;</span></mark>\n<span class=\"token keyword\">const</span> x<span class=\"token punctuation\">:</span> Foo <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>",
"goodExample": "<span class=\"token keyword\">import</span> <span class=\"token keyword\">type</span> <span class=\"token punctuation\">{</span> Foo <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'./FooType'</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">const</span> x<span class=\"token punctuation\">:</span> Foo <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"@typescript-eslint/default-param-last": {
"name": "@typescript-eslint/default-param-last",
"value": "off",
"description": "有默认值或可选的参数必须放到最后",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "default-param-last",
"requiresTypeChecking": false
},
"@typescript-eslint/dot-notation": {
"name": "@typescript-eslint/dot-notation",
"value": "off",
"description": "禁止使用 foo['bar'],必须写成 foo.bar",
"reason": "当需要写一系列属性的时候,可以更统一",
"badExample": "",
"goodExample": "",
"fixable": true,
"extendsBaseRule": "dot-notation",
"requiresTypeChecking": true
},
"@typescript-eslint/explicit-function-return-type": {
"name": "@typescript-eslint/explicit-function-return-type",
"value": "off",
"description": "函数返回值必须与声明的类型一致",
"reason": "返回值类型可以推导出来",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"@typescript-eslint/explicit-member-accessibility": {
"name": "@typescript-eslint/explicit-member-accessibility",
"value": "error",
"description": "必须设置类的成员的可访问性",
"reason": "将不需要公开的成员设为私有的,可以增强代码的可理解性,对文档输出也很友好",
"badExample": "<span class=\"token keyword\">class</span> <span class=\"token class-name\">Foo2</span> <span class=\"token punctuation\">{</span>\n <mark class=\"eslint-error\" data-tip=\"Missing accessibility modifier on class property foo.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/explicit-member-accessibility)</span>\"><span class=\"token keyword\">static</span> foo <span class=\"token operator\">=</span> <span class=\"token string\">'foo'</span><span class=\"token punctuation\">;</span></mark>\n <mark class=\"eslint-error\" data-tip=\"Missing accessibility modifier on method definition getFoo.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/explicit-member-accessibility)</span>\"><span class=\"token keyword\">static</span> <span class=\"token function\">getFoo</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">return</span> Foo2<span class=\"token punctuation\">.</span>foo<span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span></mark>\n <mark class=\"eslint-error\" data-tip=\"Missing accessibility modifier on method definition constructor.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/explicit-member-accessibility)</span>\"><span class=\"token keyword\">constructor</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span></mark>\n <mark class=\"eslint-error\" data-tip=\"Missing accessibility modifier on class property bar.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/explicit-member-accessibility)</span>\">bar <span class=\"token operator\">=</span> <span class=\"token string\">'bar'</span><span class=\"token punctuation\">;</span></mark>\n <mark class=\"eslint-error\" data-tip=\"Missing accessibility modifier on method definition getBar.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/explicit-member-accessibility)</span>\"><span class=\"token function\">getBar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span></mark>\n <mark class=\"eslint-error\" data-tip=\"Missing accessibility modifier on get property accessor baz.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/explicit-member-accessibility)</span>\"><span class=\"token keyword\">get</span> <span class=\"token function\">baz</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">return</span> <span class=\"token string\">'baz'</span><span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span></mark>\n <mark class=\"eslint-error\" data-tip=\"Missing accessibility modifier on set property accessor baz.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/explicit-member-accessibility)</span>\"><span class=\"token keyword\">set</span> <span class=\"token function\">baz</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">value</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token builtin\">console</span><span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>value<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span></mark>\n<span class=\"token punctuation\">}</span>",
"goodExample": "<span class=\"token keyword\">class</span> <span class=\"token class-name\">Foo2</span> <span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">private</span> <span class=\"token keyword\">static</span> foo <span class=\"token operator\">=</span> <span class=\"token string\">'foo'</span><span class=\"token punctuation\">;</span>\n <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token function\">getFoo</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">return</span> Foo2<span class=\"token punctuation\">.</span>foo<span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span>\n <span class=\"token keyword\">public</span> <span class=\"token keyword\">constructor</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\n <span class=\"token keyword\">protected</span> bar <span class=\"token operator\">=</span> <span class=\"token string\">'bar'</span><span class=\"token punctuation\">;</span>\n <span class=\"token keyword\">public</span> <span class=\"token function\">getBar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\n <span class=\"token keyword\">public</span> <span class=\"token keyword\">get</span> <span class=\"token function\">baz</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">return</span> <span class=\"token string\">'baz'</span><span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span>\n <span class=\"token keyword\">public</span> <span class=\"token keyword\">set</span> <span class=\"token function\">baz</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">value</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token builtin\">console</span><span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>value<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"@typescript-eslint/explicit-module-boundary-types": {
"name": "@typescript-eslint/explicit-module-boundary-types",
"value": "off",
"description": "导出的函数或类中的 public 方法必须定义输入输出参数的类型",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"@typescript-eslint/init-declarations": {
"name": "@typescript-eslint/init-declarations",
"value": "off",
"description": "变量必须在定义的时候赋值",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "init-declarations",
"requiresTypeChecking": false
},
"@typescript-eslint/lines-between-class-members": {
"name": "@typescript-eslint/lines-between-class-members",
"value": "off",
"description": "类的成员之间是否需要空行",
"reason": "有时为了紧凑需要挨在一起,有时为了可读性需要空一行",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "lines-between-class-members",
"requiresTypeChecking": false
},
"@typescript-eslint/member-ordering": {
"name": "@typescript-eslint/member-ordering",
"value": [
"error",
{
"default": [
"public-static-field",
"protected-static-field",
"private-static-field",
"static-field",
"public-static-method",
"protected-static-method",
"private-static-method",
"static-method",
"public-instance-field",
"protected-instance-field",
"private-instance-field",
"public-field",
"protected-field",
"private-field",
"instance-field",
"field",
"constructor",
"public-instance-method",
"protected-instance-method",
"private-instance-method",
"public-method",
"protected-method",
"private-method",
"instance-method",
"method"
]
}
],
"description": "指定类成员的排序规则",
"reason": "优先级:\n1. static > instance\n2. field > constructor > method\n3. public > protected > private",
"badExample": "<span class=\"token keyword\">class</span> <span class=\"token class-name\">Foo1</span> <span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">private</span> <span class=\"token function\">getBar3</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">return</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>bar3<span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span>\n <mark class=\"eslint-error\" data-tip=\"Member getBar2 should be declared before all private instance method definitions.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/member-ordering)</span>\"><span class=\"token keyword\">protected</span> <span class=\"token function\">getBar2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span></mark>\n <mark class=\"eslint-error\" data-tip=\"Member getBar1 should be declared before all private instance method definitions.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/member-ordering)</span>\"><span class=\"token keyword\">public</span> <span class=\"token function\">getBar1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span></mark>\n <mark class=\"eslint-error\" data-tip=\"Member constructor should be declared before all private instance method definitions.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/member-ordering)</span>\"><span class=\"token keyword\">public</span> <span class=\"token keyword\">constructor</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token builtin\">console</span><span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>Foo1<span class=\"token punctuation\">.</span><span class=\"token function\">getFoo3</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n <span class=\"token builtin\">console</span><span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token function\">getBar3</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span></mark>\n <mark class=\"eslint-error\" data-tip=\"Member bar3 should be declared before all private instance method definitions.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/member-ordering)</span>\"><span class=\"token keyword\">private</span> bar3 <span class=\"token operator\">=</span> <span class=\"token string\">'bar3'</span><span class=\"token punctuation\">;</span></mark>\n <mark class=\"eslint-error\" data-tip=\"Member bar2 should be declared before all private instance method definitions.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/member-ordering)</span>\"><span class=\"token keyword\">protected</span> bar2 <span class=\"token operator\">=</span> <span class=\"token string\">'bar2'</span><span class=\"token punctuation\">;</span></mark>\n <mark class=\"eslint-error\" data-tip=\"Member bar1 should be declared before all private instance method definitions.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/member-ordering)</span>\"><span class=\"token keyword\">public</span> bar1 <span class=\"token operator\">=</span> <span class=\"token string\">'bar1'</span><span class=\"token punctuation\">;</span></mark>\n <mark class=\"eslint-error\" data-tip=\"Member getFoo3 should be declared before all private instance method definitions.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/member-ordering)</span>\"><span class=\"token keyword\">private</span> <span class=\"token keyword\">static</span> <span class=\"token function\">getFoo3</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">return</span> Foo1<span class=\"token punctuation\">.</span>foo3<span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span></mark>\n <mark class=\"eslint-error\" data-tip=\"Member getFoo2 should be declared before all private instance method definitions.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/member-ordering)</span>\"><span class=\"token keyword\">protected</span> <span class=\"token keyword\">static</span> <span class=\"token function\">getFoo2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span></mark>\n <mark class=\"eslint-error\" data-tip=\"Member getFoo1 should be declared before all private instance method definitions.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/member-ordering)</span>\"><span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token function\">getFoo1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span></mark>\n <mark class=\"eslint-error\" data-tip=\"Member foo3 should be declared before all private instance method definitions.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/member-ordering)</span>\"><span class=\"token keyword\">private</span> <span class=\"token keyword\">static</span> foo3 <span class=\"token operator\">=</span> <span class=\"token string\">'foo3'</span><span class=\"token punctuation\">;</span></mark>\n <mark class=\"eslint-error\" data-tip=\"Member foo2 should be declared before all private instance method definitions.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/member-ordering)</span>\"><span class=\"token keyword\">protected</span> <span class=\"token keyword\">static</span> foo2 <span class=\"token operator\">=</span> <span class=\"token string\">'foo2'</span><span class=\"token punctuation\">;</span></mark>\n <mark class=\"eslint-error\" data-tip=\"Member foo1 should be declared before all private instance method definitions.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/member-ordering)</span>\"><span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> foo1 <span class=\"token operator\">=</span> <span class=\"token string\">'foo1'</span><span class=\"token punctuation\">;</span></mark>\n<span class=\"token punctuation\">}</span>",
"goodExample": "<span class=\"token keyword\">class</span> <span class=\"token class-name\">Foo2</span> <span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> foo1 <span class=\"token operator\">=</span> <span class=\"token string\">'foo1'</span><span class=\"token punctuation\">;</span>\n <span class=\"token keyword\">protected</span> <span class=\"token keyword\">static</span> foo2 <span class=\"token operator\">=</span> <span class=\"token string\">'foo2'</span><span class=\"token punctuation\">;</span>\n <span class=\"token keyword\">private</span> <span class=\"token keyword\">static</span> foo3 <span class=\"token operator\">=</span> <span class=\"token string\">'foo3'</span><span class=\"token punctuation\">;</span>\n <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token function\">getFoo1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\n <span class=\"token keyword\">protected</span> <span class=\"token keyword\">static</span> <span class=\"token function\">getFoo2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\n <span class=\"token keyword\">private</span> <span class=\"token keyword\">static</span> <span class=\"token function\">getFoo3</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">return</span> Foo2<span class=\"token punctuation\">.</span>foo3<span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span>\n <span class=\"token keyword\">public</span> bar1 <span class=\"token operator\">=</span> <span class=\"token string\">'bar1'</span><span class=\"token punctuation\">;</span>\n <span class=\"token keyword\">protected</span> bar2 <span class=\"token operator\">=</span> <span class=\"token string\">'bar2'</span><span class=\"token punctuation\">;</span>\n <span class=\"token keyword\">private</span> bar3 <span class=\"token operator\">=</span> <span class=\"token string\">'bar3'</span><span class=\"token punctuation\">;</span>\n <span class=\"token keyword\">public</span> <span class=\"token keyword\">constructor</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token builtin\">console</span><span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>Foo2<span class=\"token punctuation\">.</span><span class=\"token function\">getFoo3</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n <span class=\"token builtin\">console</span><span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token function\">getBar3</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span>\n <span class=\"token keyword\">public</span> <span class=\"token function\">getBar1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\n <span class=\"token keyword\">protected</span> <span class=\"token function\">getBar2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\n <span class=\"token keyword\">private</span> <span class=\"token function\">getBar3</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">return</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>bar3<span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"@typescript-eslint/method-signature-style": {
"name": "@typescript-eslint/method-signature-style",
"value": "error",
"description": "接口中的方法必须用属性的方式定义",
"reason": "配置了 strictFunctionTypes 之后,用属性的方式定义方法可以获得更严格的检查",
"badExample": "<span class=\"token keyword\">interface</span> <span class=\"token class-name\">Foo1</span> <span class=\"token punctuation\">{</span>\n <mark class=\"eslint-error\" data-tip=\"Shorthand method signature is forbidden. Use a function property instead.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/method-signature-style)</span>\"><span class=\"token function\">bar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token builtin\">number</span><span class=\"token punctuation\">;</span></mark>\n<span class=\"token punctuation\">}</span>",
"goodExample": "<span class=\"token keyword\">interface</span> <span class=\"token class-name\">Foo1</span> <span class=\"token punctuation\">{</span>\n <span class=\"token function-variable function\">bar</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token builtin\">number</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"@typescript-eslint/naming-convention": {
"name": "@typescript-eslint/naming-convention",
"value": "off",
"description": "限制各种变量或类型的命名规则",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": true
},
"@typescript-eslint/no-array-constructor": {
"name": "@typescript-eslint/no-array-constructor",
"value": "off",
"description": "禁止使用 Array 构造函数",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": true,
"extendsBaseRule": "no-array-constructor",
"requiresTypeChecking": false
},
"@typescript-eslint/no-base-to-string": {
"name": "@typescript-eslint/no-base-to-string",
"value": "off",
"description": "禁止滥用 toString 方法",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": true
},
"@typescript-eslint/no-confusing-non-null-assertion": {
"name": "@typescript-eslint/no-confusing-non-null-assertion",
"value": "off",
"description": "禁止使用容易混淆的非空断言",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"@typescript-eslint/no-confusing-void-expression": {
"name": "@typescript-eslint/no-confusing-void-expression",
"value": "off",
"description": "禁止使用返回值为 void 的函数的返回值",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": true
},
"@typescript-eslint/no-dupe-class-members": {
"name": "@typescript-eslint/no-dupe-class-members",
"value": "off",
"description": "禁止重复定义类的成员",
"reason": "编译阶段就会报错了",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "no-dupe-class-members",
"requiresTypeChecking": false
},
"@typescript-eslint/no-duplicate-enum-values": {
"name": "@typescript-eslint/no-duplicate-enum-values",
"value": "error",
"description": "禁止枚举类型存在两个相同的值",
"reason": "",
"badExample": "<span class=\"token keyword\">enum</span> <span class=\"token constant\">E1</span> <span class=\"token punctuation\">{</span>\n <span class=\"token constant\">A</span> <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n <mark class=\"eslint-error\" data-tip=\"Duplicate enum member value 0.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/no-duplicate-enum-values)</span>\"><span class=\"token constant\">B</span> <span class=\"token operator\">=</span> <span class=\"token number\">0</span></mark><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span>",
"goodExample": "<span class=\"token keyword\">enum</span> <span class=\"token constant\">E2</span> <span class=\"token punctuation\">{</span>\n <span class=\"token constant\">A</span> <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n <span class=\"token constant\">B</span> <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span>",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"@typescript-eslint/no-duplicate-type-constituents": {
"name": "@typescript-eslint/no-duplicate-type-constituents",
"value": "off",
"description": "不允许枚举同时具有数字和字符串成员",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": true
},
"@typescript-eslint/no-dynamic-delete": {
"name": "@typescript-eslint/no-dynamic-delete",
"value": "off",
"description": "禁止 delete 时传入的 key 是动态的",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"@typescript-eslint/no-empty-function": {
"name": "@typescript-eslint/no-empty-function",
"value": "off",
"description": "不允许有空函数",
"reason": "有时需要将一个空函数设置为某个项的默认值",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "no-empty-function",
"requiresTypeChecking": false
},
"@typescript-eslint/no-empty-interface": {
"name": "@typescript-eslint/no-empty-interface",
"value": "error",
"description": "禁止定义空的接口",
"reason": "",
"badExample": "<span class=\"token keyword\">interface</span> <span class=\"token class-name\"><mark class=\"eslint-error\" data-tip=\"An empty interface is equivalent to `{}`.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/no-empty-interface)</span>\">Foo1</mark></span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>",
"goodE