UNPKG

eslint-config-alloy

Version:
402 lines 116 kB
{ "@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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/adjacent-overload-signatures)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/adjacent-overload-signatures)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/adjacent-overload-signatures)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/class-literal-property-style)&lt;/span&gt;\">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 &amp;apos;as string&amp;apos; instead of &amp;apos;&amp;lt;string&amp;gt;&amp;apos;.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/consistent-type-assertions)&lt;/span&gt;\"><span class=\"token operator\">&lt;</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 = { ... }.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/consistent-type-assertions)&lt;/span&gt;\"><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`.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/consistent-type-definitions)&lt;/span&gt;\">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`.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/consistent-type-imports)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/explicit-member-accessibility)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/explicit-member-accessibility)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/explicit-member-accessibility)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/explicit-member-accessibility)&lt;/span&gt;\">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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/explicit-member-accessibility)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/explicit-member-accessibility)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/explicit-member-accessibility)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/member-ordering)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/member-ordering)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/member-ordering)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/member-ordering)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/member-ordering)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/member-ordering)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/member-ordering)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/member-ordering)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/member-ordering)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/member-ordering)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/member-ordering)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/member-ordering)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/method-signature-style)&lt;/span&gt;\"><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.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/no-duplicate-enum-values)&lt;/span&gt;\"><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 `{}`.&lt;br/&gt;&lt;span class='eslint-error-rule-id'&gt;eslint(@typescript-eslint/no-empty-interface)&lt;/span&gt;\">Foo1</mark></span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>", "goodE