-
Notifications
You must be signed in to change notification settings - Fork 31
/
index.js
1020 lines (1020 loc) · 37.6 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/**
* AlloyTeam TSLint 规则
*
* 作者: xcatliu <[email protected]>
* 仓库: https://github.com/AlloyTeam/tslint-config-alloy
*
* 基于 [email protected]
* 此文件是由脚本 scripts/build.ts 自动生成
*
* @category 此规则属于哪种分类
* @description 一句话描述此规则
* @reason 为什么要开启(关闭)此规则
* @ts-only 仅支持 ts 文件
* @has-fixer 支持自动修复
* @requires-type-info 需要提供类型信息(需要 --project 参数)
* @prettier 可交由 prettier 控制
*/
module.exports = {
rules: {
/**
* @category typescript-specific
* @description 重载的函数必须写在一起
* @ts-only 仅支持 ts 文件
*/
'adjacent-overload-signatures': true,
/**
* @category typescript-specific
* @description 禁用特定的类型
* @reason 该规则用于禁止某个具体的类型的使用
* @ts-only 仅支持 ts 文件
*/
'ban-types': false,
/**
* @category typescript-specific
* @description 必须设置类的成员的可访问性
* @reason 将不需要公开的成员设为私有的,可以增强代码的可理解性,对文档输出也很友好
* @ts-only 仅支持 ts 文件
* @has-fixer 支持自动修复
*/
'member-access': [true, 'check-accessor', 'check-constructor', 'check-parameter-property'],
/**
* @category typescript-specific
* @description 指定类成员的排序规则
* @reason 优先级:
* 1. static > instance
* 2. field > constructor > method
* 3. public > protected > private
* @has-fixer 支持自动修复
*/
'member-ordering': [
true,
{
order: [
'public-static-field',
'protected-static-field',
'private-static-field',
'public-static-method',
'protected-static-method',
'private-static-method',
'public-instance-field',
'protected-instance-field',
'private-instance-field',
'public-constructor',
'protected-constructor',
'private-constructor',
'public-instance-method',
'protected-instance-method',
'private-instance-method'
]
}
],
/**
* @category typescript-specific
* @description 禁止使用 any
* @reason 太严格了
* @ts-only 仅支持 ts 文件
*/
'no-any': false,
/**
* @category typescript-specific
* @description 禁止定义空的接口
* @ts-only 仅支持 ts 文件
*/
'no-empty-interface': true,
/**
* @category typescript-specific
* @description 禁止导入有副作用(立即执行)的模块,除了 css, less, sass, scss
* @reason 有副作用(立即执行)的模块无法控制其执行过程
*/
'no-import-side-effect': [true, { 'ignore-module': '(\\.css|\\.less|\\.sass|\\.scss)$' }],
/**
* @category typescript-specific
* @description 禁止给一个初始化时直接赋值为 number, string 或 boolean 的变量显式的指定类型
* @reason 可以简化代码,并且支持自动修复
* @ts-only 仅支持 ts 文件
* @has-fixer 支持自动修复
*/
'no-inferrable-types': true,
/**
* @category typescript-specific
* @description 禁止使用 module 来定义命名空间
* @reason module 已成为 js 的关键字
* @ts-only 仅支持 ts 文件
* @has-fixer 支持自动修复
*/
'no-internal-module': true,
/**
* @category typescript-specific
* @description 禁止使用魔法数字,仅允许使用一部分白名单中的数字
* @reason 魔法数字无法理解
*/
'no-magic-numbers': [true, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100, 1000, 10000],
/**
* @category typescript-specific
* @description 禁止使用 namespace 来定义命名空间
* @reason 使用 es6 引入模块,才是更标准的方式。
* 允许使用 declare namespace ... {} 来定义外部命名空间
* @ts-only 仅支持 ts 文件
*/
'no-namespace': [true, 'allow-declarations'],
/**
* @category typescript-specific
* @description 禁止使用 non-null 断言(感叹号)
* @reason non-null 断言不安全,最好使用条件语句把 null 排除掉比较好
* @ts-only 仅支持 ts 文件
*/
'no-non-null-assertion': true,
/**
* @category typescript-specific
* @description 禁止对函数的参数重新赋值
*/
'no-parameter-reassignment': true,
/**
* @category typescript-specific
* @description 禁止使用三斜线引入模块 /// <reference path="foo" />
* @reason 引入模块时应使用更先进的 import 语法
* 三斜线仅能用于引入一个类型文件 /// <reference types="foo" />
*/
'no-reference': true,
/**
* @category typescript-specific
* @description 禁止无用的类型断言
* @reason Requires Type Info 的规则,无法在编辑器中显示错误,不方便修复
* @ts-only 仅支持 ts 文件
* @has-fixer 支持自动修复
* @requires-type-info 需要提供类型信息
*/
'no-unnecessary-type-assertion': false,
/**
* @category typescript-specific
* @description 禁止使用 require 来引入模块
* @reason 统一使用 import 来引入模块,特殊情况使用单行注释允许 require 引入
* @ts-only 仅支持 ts 文件
*/
'no-var-requires': true,
/**
* @category typescript-specific
* @description 必须使用箭头函数,除非是单独的函数声明或是命名函数
* @reason 统一使用箭头函数,避免 this 指向问题
*/
'only-arrow-functions': [true, 'allow-declarations', 'allow-named-functions'],
/**
* @category typescript-specific
* @description 使用 for 循环遍历数组时,如果 index 仅用于获取成员,则必须使用 for of 循环替代 for 循环
* @reason for of 循环更加易读
*/
'prefer-for-of': true,
/**
* @category typescript-specific
* @description async 函数的返回值必须是 Promise
* @reason 有时 async 函数在某个分支是同步的,不需要返回 Promise
* Requires Type Info 的规则,无法在编辑器中显示错误,不方便修复
* @requires-type-info 需要提供类型信息
*/
'promise-function-async': false,
/**
* @category typescript-specific
* @description 变量、函数返回值、函数参数等必须要有类型定义
* @reason 大部分类型都可以依靠类型推论,没必要全部手动定义
* @ts-only 仅支持 ts 文件
*/
typedef: false,
/**
* @category typescript-specific
* @description 类型定义的冒号前面必须没有空格,后面必须有一个空格
* @ts-only 仅支持 ts 文件
* @has-fixer 支持自动修复
* @prettier 可交由 prettier 控制
*/
'typedef-whitespace': [
true,
{
'call-signature': 'nospace',
'index-signature': 'nospace',
parameter: 'nospace',
'property-declaration': 'nospace',
'variable-declaration': 'nospace'
},
{
'call-signature': 'onespace',
'index-signature': 'onespace',
parameter: 'onespace',
'property-declaration': 'onespace',
'variable-declaration': 'onespace'
}
],
/**
* @category typescript-specific
* @description 函数重载时,若能通过联合类型将两个函数的类型声明合为一个,则使用联合类型而不是两个函数声明
* @ts-only 仅支持 ts 文件
*/
'unified-signatures': true,
/**
* @category functionality
* @description await 必须接受 Promise
* @reason promise-function-async 里已经允许 async 函数返回值为非 Promise 了,故也应该允许 await 接受非 Promise
* Requires Type Info 的规则,无法在编辑器中显示错误,不方便修复
* @ts-only 仅支持 ts 文件
* @requires-type-info 需要提供类型信息
*/
'await-promise': false,
/**
* @category functionality
* @description 禁用指定的函数或全局方法
* @reason 用于限制某个具体的函数不能使用
*/
ban: false,
/**
* @category functionality
* @description 禁止使用逗号操作符
*/
'ban-comma-operator': true,
/**
* @category functionality
* @description if 后面必须有 {,除非是单行 if
* @has-fixer 支持自动修复
*/
curly: [true, 'ignore-same-line'],
/**
* @category functionality
* @description for in 内部必须有 hasOwnProperty
*/
forin: true,
/**
* @category functionality
* @description 禁用指定的模块
* @reason 用于限制某个具体的模块不能使用
*/
'import-blacklist': false,
/**
* @category functionality
* @description 只允许在 do, for, while 或 switch 中使用 label
* @reason 在任何情况都不应该使用 label
*/
'label-position': false,
/**
* @category functionality
* @description 禁止使用 arguments.callee
*/
'no-arg': true,
/**
* @category functionality
* @description 禁止使用位运算
* @reason 位运算很常见
*/
'no-bitwise': false,
/**
* @category functionality
* @description 禁止在分支条件判断中有赋值操作
*/
'no-conditional-assignment': true,
/**
* @category functionality
* @description 禁止使用 console
* @reason 没必要禁止,会让 autofixOnSave 很不方便
*/
'no-console': false,
/**
* @category functionality
* @description 禁止使用 new 来生成 String, Number 或 Boolean
*/
'no-construct': true,
/**
* @category functionality
* @description 禁止使用 debugger
* @reason 没必要禁止,会让 autofixOnSave 很不方便
*/
'no-debugger': false,
/**
* @category functionality
* @description 禁止 super 在一个构造函数中出现两次
*/
'no-duplicate-super': true,
/**
* @category functionality
* @description 禁止在 switch 语句中出现重复测试表达式的 case
*/
'no-duplicate-switch-case': true,
/**
* @category functionality
* @description 禁止出现重复的变量定义或函数参数名
*/
'no-duplicate-variable': [true, 'check-parameters'],
/**
* @category functionality
* @description 禁止 delete 动态的值
* @reason 没必要限制
*/
'no-dynamic-delete': false,
/**
* @category functionality
* @description 禁止出现空代码块,允许 catch 是空代码块
*/
'no-empty': [true, 'allow-empty-catch', 'allow-empty-functions'],
/**
* @category functionality
* @description 禁止使用 eval
*/
'no-eval': true,
/**
* @category functionality
* @description 函数返回值为 Promise 时,必须被处理
* @reason 太严格了
* Requires Type Info 的规则,无法在编辑器中显示错误,不方便修复
* @ts-only 仅支持 ts 文件
* @requires-type-info 需要提供类型信息
*/
'no-floating-promises': false,
/**
* @category functionality
* @description 禁止对 array 使用 for in 循环
* @reason 没必要限制
* Requires Type Info 的规则,无法在编辑器中显示错误,不方便修复
* @requires-type-info 需要提供类型信息
*/
'no-for-in-array': false,
/**
* @category functionality
* @description 禁止引入 package.json 中不存在的模块
*/
'no-implicit-dependencies': [true, 'dev'],
/**
* @category functionality
* @description 禁止推论出的类型是空对象类型
* @reason 没必要限制
* Requires Type Info 的规则,无法在编辑器中显示错误,不方便修复
* @ts-only 仅支持 ts 文件
* @requires-type-info 需要提供类型信息
*/
'no-inferred-empty-object-type': false,
/**
* @category functionality
* @description 禁止在非模版字符串中出现 ${}
*/
'no-invalid-template-strings': true,
/**
* @category functionality
* @description 禁止在类外面使用 this
* @reason 禁止滥用 this,如需使用,在文件中局部禁用此规则即可
*/
'no-invalid-this': true,
/**
* @category functionality
* @description 禁止在接口中定义 constructor,或在类中定义 new
* @ts-only 仅支持 ts 文件
*/
'no-misused-new': false,
/**
* @category functionality
* @description 禁止使用 null
* @reason 没必要限制
* @has-fixer 支持自动修复
*/
'no-null-keyword': false,
/**
* @category functionality
* @description 禁止对对象字面量进行类型断言(断言成 any 是允许的)
* @ts-only 仅支持 ts 文件
*/
'no-object-literal-type-assertion': true,
/**
* @category functionality
* @description 禁止没必要的 return await
* @reason return await 用起来没问题
* @has-fixer 支持自动修复
*/
'no-return-await': false,
/**
* @category functionality
* @description 禁止变量名与上层作用域内的定义过的变量重复
* @reason 很多时候函数的形参和传参是同名的
*/
'no-shadowed-variable': false,
/**
* @category functionality
* @description 禁止在数组中出现连续的逗号,如 let foo = [,,]
*/
'no-sparse-arrays': true,
/**
* @category functionality
* @description 禁止出现 foo['bar'],必须写成 foo.bar
* @has-fixer 支持自动修复
*/
'no-string-literal': true,
/**
* @category functionality
* @description 禁止 throw 字符串,必须 throw 一个 Error 对象
* @has-fixer 支持自动修复
*/
'no-string-throw': true,
/**
* @category functionality
* @description 禁止 import 模块的子文件
* @reason 没必要限制
*/
'no-submodule-imports': false,
/**
* @category functionality
* @description switch 的 case 必须 return 或 break
*/
'no-switch-case-fall-through': true,
/**
* @category functionality
* @description 禁止将 this 赋值给其他变量,除非是解构赋值
*/
'no-this-assignment': [true, { 'allow-destructuring': true }],
/**
* @category functionality
* @description 使用实例的方法时,必须 bind 到实例上
* @reason Requires Type Info 的规则,无法在编辑器中显示错误,不方便修复
* @ts-only 仅支持 ts 文件
* @requires-type-info 需要提供类型信息
*/
'no-unbound-method': false,
/**
* @category functionality
* @description 禁止定义没必要的类,比如只有静态方法的类
* @reason 没必要限制
*/
'no-unnecessary-class': false,
/**
* @category functionality
* @description 禁止取用一个类型为 any 的对象的属性
* @reason 太严格了
* Requires Type Info 的规则,无法在编辑器中显示错误,不方便修复
* @ts-only 仅支持 ts 文件
* @requires-type-info 需要提供类型信息
*/
'no-unsafe-any': false,
/**
* @category functionality
* @description 禁止 finally 内出现 return, continue, break, throw 等
* @reason finally 会比 catch 先执行
*/
'no-unsafe-finally': true,
/**
* @category functionality
* @description 禁止无用的表达式
*/
'no-unused-expression': true,
/**
* @category functionality
* @description 变量必须先定义后使用
* @reason 循环引用没法处理
* Requires Type Info 的规则,无法在编辑器中显示错误,不方便修复
* @requires-type-info 需要提供类型信息
*/
'no-use-before-declare': false,
/**
* @category functionality
* @description 禁止使用 var
* @has-fixer 支持自动修复
*/
'no-var-keyword': true,
/**
* @category functionality
* @description 禁止返回值为 void 类型
* @reason 没必要限制,void 很常用
* Requires Type Info 的规则,无法在编辑器中显示错误,不方便修复
* @requires-type-info 需要提供类型信息
*/
'no-void-expression': false,
/**
* @category functionality
* @description 可以用三元表达式时,就不用 if else
* @reason 没必要限制
*/
'prefer-conditional-expression': false,
/**
* @category functionality
* @description 使用 { ...foo, bar: 1 } 代替 Object.assign({}, foo, { bar: 1 })
* @reason 前者的类型检查更完善
* @has-fixer 支持自动修复
*/
'prefer-object-spread': true,
/**
* @category functionality
* @description parseInt 必须传入第二个参数
*/
radix: true,
/**
* @category functionality
* @description 使用加号时,两者必须同为数字或同为字符串
* @reason 太严格了
* Requires Type Info 的规则,无法在编辑器中显示错误,不方便修复
* @requires-type-info 需要提供类型信息
*/
'restrict-plus-operands': false,
/**
* @category functionality
* @description 在分支条件判断中必须传入布尔类型的值
* @reason 太严格了
* Requires Type Info 的规则,无法在编辑器中显示错误,不方便修复
* @ts-only 仅支持 ts 文件
* @requires-type-info 需要提供类型信息
*/
'strict-boolean-expressions': false,
/**
* @category functionality
* @description 禁止出现永远为 true 或永远为 false 的条件判断(通过类型预测出一个表达式为 true 还是 false)
* @reason 没必要限制
* Requires Type Info 的规则,无法在编辑器中显示错误,不方便修复
* @ts-only 仅支持 ts 文件
* @requires-type-info 需要提供类型信息
*/
'strict-type-predicates': false,
/**
* @category functionality
* @description switch 语句必须有 default
*/
'switch-default': false,
/**
* @category functionality
* @description 必须使用 === 或 !==,禁止使用 == 或 !=
*/
'triple-equals': true,
/**
* @category functionality
* @description typeof 表达式比较的对象必须是 'undefined', 'object', 'boolean', 'number', 'string', 'function' 或 'symbol'
* @reason TypeScirpt 2.2 之后,编译器已经只带了这个功能
*/
'typeof-compare': false,
/**
* @category functionality
* @description 传入的类型与默认类型一致时,必须省略传入的类型
* @reason 没必要限制
* Requires Type Info 的规则,无法在编辑器中显示错误,不方便修复
* @ts-only 仅支持 ts 文件
* @requires-type-info 需要提供类型信息
*/
'use-default-type-parameter': false,
/**
* @category functionality
* @description 必须使用 isNaN(foo) 而不是 foo === NaN
*/
'use-isnan': true,
/**
* @category maintainability
* @description 禁止函数的循环复杂度超过 20,详见 https://en.wikipedia.org/wiki/Cyclomatic_complexity
*/
'cyclomatic-complexity': [true, 20],
/**
* @category maintainability
* @description 禁止使用废弃(被标识了 @deprecated)的 API
* @reason 太严格了
* Requires Type Info 的规则,无法在编辑器中显示错误,不方便修复
* @requires-type-info 需要提供类型信息
*/
deprecation: false,
/**
* @category maintainability
* @description 文件最后一行必须有一个空行
* @has-fixer 支持自动修复
* @prettier 可交由 prettier 控制
*/
eofline: true,
/**
* @category maintainability
* @description 一个缩进必须用四个空格替代
* @has-fixer 支持自动修复
* @prettier 可交由 prettier 控制
*/
indent: [true, 'spaces', 4],
/**
* @category maintainability
* @description 限制换行符为 LF 或 CRLF
* @reason 没必要限制
* @has-fixer 支持自动修复
* @prettier 可交由 prettier 控制
*/
'linebreak-style': [true, 'LF'],
/**
* @category maintainability
* @description 限制每个文件的类的数量
* @reason 没必要限制
*/
'max-classes-per-file': false,
/**
* @category maintainability
* @description 限制每个文件的行数
* @reason 没必要限制
*/
'max-file-line-count': false,
/**
* @category maintainability
* @description 限制每行字符数
* @reason 没必要限制
* @prettier 可交由 prettier 控制
*/
'max-line-length': false,
/**
* @category maintainability
* @description 禁止使用 default export
* @reason 没必要限制
*/
'no-default-export': false,
/**
* @category maintainability
* @description 禁止出现重复的 import
*/
'no-duplicate-imports': true,
/**
* @category maintainability
* @description 禁止一个文件中出现多个相同的 namespace
* @ts-only 仅支持 ts 文件
*/
'no-mergeable-namespace': true,
/**
* @category maintainability
* @description 禁止使用 require
* @reason 有时需要动态引入,还是需要用 require
*/
'no-require-imports': false,
/**
* @category maintainability
* @description 对象字面量必须按 key 排序
* @reason 太严格了
*/
'object-literal-sort-keys': false,
/**
* @category maintainability
* @description 申明后不再被修改的变量必须使用 const 来申明
* @reason 没必要强制要求
* @has-fixer 支持自动修复
*/
'prefer-const': false,
/**
* @category maintainability
* @description 如果私有变量只在构造函数中被赋值,则必须使用 readonly 修饰符
* @reason 没必要限制
* Requires Type Info 的规则,无法在编辑器中显示错误,不方便修复
* @ts-only 仅支持 ts 文件
* @requires-type-info 需要提供类型信息
*/
'prefer-readonly': false,
/**
* @category maintainability
* @description 限制对象、数组、解构赋值等的最后一项末尾是否需要逗号
* @has-fixer 支持自动修复
* @prettier 可交由 prettier 控制
*/
'trailing-comma': [true, { multiline: 'never', singleline: 'never' }],
/**
* @category style
* @description 变量定义需要竖向对其
* @reason 没必要限制
* @has-fixer 支持自动修复
* @prettier 可交由 prettier 控制
*/
align: false,
/**
* @category style
* @description 限制必须使用 T[] 或 Array<T> 之中的一种来定义数组的类型
* @reason 没必要限制
* @ts-only 仅支持 ts 文件
* @has-fixer 支持自动修复
*/
'array-type': false,
/**
* @category style
* @description 箭头函数的参数必须有小括号
* @has-fixer 支持自动修复
* @prettier 可交由 prettier 控制
*/
'arrow-parens': true,
/**
* @category style
* @description 箭头函数的函数体只有 return 语句的时候,必须简写
* @has-fixer 支持自动修复
*/
'arrow-return-shorthand': true,
/**
* @category style
* @description 数字字面量必须在加号的右边,即禁止 1 + x
* @reason 没必要限制
*/
'binary-expression-operand-order': false,
/**
* @category style
* @description 可以简写为函数类型的接口或字面类似,必须简写
* @ts-only 仅支持 ts 文件
* @has-fixer 支持自动修复
*/
'callable-types': true,
/**
* @category style
* @description 类名与接口名必须为驼峰式
*/
'class-name': true,
/**
* @category style
* @description 限制单行注释的规则
* @has-fixer 支持自动修复
*/
'comment-format': [true, 'check-space'],
/**
* @category style
* @description 类、函数等必须写注释
* @reason 太严格了
* Requires Type Info 的规则,无法在编辑器中显示错误,不方便修复
* @requires-type-info 需要提供类型信息
*/
'completed-docs': false,
/**
* @category style
* @description 文件类型必须是 utf-8
*/
encoding: true,
/**
* @category style
* @description 文件的开头必须有指定的字符串
* @reason 太严格了
* @has-fixer 支持自动修复
*/
'file-header': false,
/**
* @category style
* @description 约束文件命名规范
* @reason 没必要约束
*/
'file-name-casing': false,
/**
* @category style
* @description import 语句中,关键字之间的间距必须是一个空格
* @prettier 可交由 prettier 控制
*/
'import-spacing': true,
/**
* @category style
* @description 接口名称必须已 I 开头
* @reason 没必要限制
* @ts-only 仅支持 ts 文件
*/
'interface-name': false,
/**
* @category style
* @description 优先使用接口而不是字面类型
* @reason 接口可以 implement extend 和 merge
* @ts-only 仅支持 ts 文件
* @has-fixer 支持自动修复
*/
'interface-over-type-literal': true,
/**
* @category style
* @description 注释必须符合 JSDoc 规范
*/
'jsdoc-format': [true, 'check-multiline-start'],
/**
* @category style
* @description import 的名称必须和 export default 的名称一致
* @reason 没必要限制
* Requires Type Info 的规则,无法在编辑器中显示错误,不方便修复
* @ts-only 仅支持 ts 文件
* @requires-type-info 需要提供类型信息
*/
'match-default-export-name': false,
/**
* @category style
* @description new 后面只必须有一个空格
* @prettier 可交由 prettier 控制
*/
'new-parens': true,
/**
* @category style
* @description return 语句前必须有空行
* @reason 没必要有空行
*/
'newline-before-return': false,
/**
* @category style
* @description 链式调用时,每次调用都必须占用一行
* @reason 没必要限制
* @prettier 可交由 prettier 控制
*/
'newline-per-chained-call': false,
/**
* @category style
* @description 类型断言必须使用 as Type,禁止使用 <Type>
* @reason <Type> 容易被理解为 jsx
* @ts-only 仅支持 ts 文件
* @has-fixer 支持自动修复
*/
'no-angle-bracket-type-assertion': true,
/**
* @category style
* @description 禁止变量与 true 或 false 比较
* @reason 没必要限制
* Requires Type Info 的规则,无法在编辑器中显示错误,不方便修复
* @ts-only 仅支持 ts 文件
* @has-fixer 支持自动修复
* @requires-type-info 需要提供类型信息
*/
'no-boolean-literal-compare': false,
/**
* @category style
* @description 禁止连续超过三行空行
* @has-fixer 支持自动修复
* @prettier 可交由 prettier 控制
*/
'no-consecutive-blank-lines': [true, 3],
/**
* @category style
* @description 禁止使用特殊空白符(比如全角空格)
* @has-fixer 支持自动修复
* @prettier 可交由 prettier 控制
*/
'no-irregular-whitespace': true,
/**
* @category style
* @description 禁止给类的构造函数的参数添加修饰符
* @ts-only 仅支持 ts 文件
*/
'no-parameter-properties': true,
/**
* @category style
* @description 禁止 JSDoc 中的冗余类型声明,因为 TypeScirpt 已经包含了大部分功能
* @ts-only 仅支持 ts 文件
*/
'no-redundant-jsdoc': true,
/**
* @category style
* @description 如果已经引入过库,则禁止使用三斜杠引入类型定义文件
* @ts-only 仅支持 ts 文件
*/
'no-reference-import': true,
/**
* @category style
* @description 禁止行尾有空格
* @has-fixer 支持自动修复
* @prettier 可交由 prettier 控制
*/
'no-trailing-whitespace': true,
/**
* @category style
* @description 禁止没必要的函数调用,如 x => f(x) 应该简写为 f
* @reason 没必要限制
*/
'no-unnecessary-callback-wrapper': false,
/**
* @category style
* @description 禁止变量定义时赋值为 undefined
* @has-fixer 支持自动修复
*/
'no-unnecessary-initializer': true,
/**
* @category style
* @description 在命名空间中,可以直接使用内部变量,不需要添加命名空间前缀
* @reason 已经禁止使用命名空间了
* Requires Type Info 的规则,无法在编辑器中显示错误,不方便修复
* @ts-only 仅支持 ts 文件
* @has-fixer 支持自动修复
* @requires-type-info 需要提供类型信息
*/
'no-unnecessary-qualifier': false,
/**
* @category style
* @description 小数必须以 0. 开头,禁止以 . 开头,并且不能以 0 结尾
* @prettier 可交由 prettier 控制
*/
'number-literal-format': true,
/**
* @category style
* @description 对象的 key 必须用引号包起来
* @reason 没必要限制
* @has-fixer 支持自动修复
* @prettier 可交由 prettier 控制
*/
'object-literal-key-quotes': false,
/**
* @category style
* @description 必须使用 a = {b} 而不是 a = {b: b}
* @has-fixer 支持自动修复
*/
'object-literal-shorthand': true,
/**
* @category style
* @description if 后的 { 禁止换行
* @has-fixer 支持自动修复
* @prettier 可交由 prettier 控制
*/
'one-line': true,
/**
* @category style
* @description 变量申明必须每行一个,for 循环的初始条件中除外
*/
'one-variable-per-declaration': [true, 'ignore-for-loop'],
/**
* @category style
* @description import 必须排序
* @has-fixer 支持自动修复
*/
'ordered-imports': true,
/**
* @category style
* @description 类中没有使用 this 的方法应该提取成类外的函数
* @reason 太严格了
*/
'prefer-function-over-method': false,
/**
* @category style
* @description 必须使用 foo(): void 而不是 foo: () => void
* @reason 没必要限制
* @has-fixer 支持自动修复
*/
'prefer-method-signature': false,
/**
* @category style
* @description 当 if 中只有 === 时,必须使用 switch 替换 if
* @reason 没必要限制
*/
'prefer-switch': false,
/**
* @category style
* @description 必须使用模版字符串而不是字符串连接
* @reason 字符串连接很常用
*/
'prefer-template': false,
/**
* @category style
* @description 当没有初始值的时候,必须使用 while 而不是 for
* @reason 没必要限制
* @has-fixer 支持自动修复
*/
'prefer-while': false,
/**
* @category style
* @description 必须使用单引号,jsx 中必须使用双引号
* @has-fixer 支持自动修复
* @prettier 可交由 prettier 控制
*/
quotemark: [true, 'single', 'jsx-double', 'avoid-template', 'avoid-escape'],
/**
* @category style
* @description 使用 return; 而不是 return undefined;
* @reason 没必要限制
* Requires Type Info 的规则,无法在编辑器中显示错误,不方便修复
* @requires-type-info 需要提供类型信息
*/
'return-undefined': false,
/**
* @category style
* @description 行尾必须有分号
* @has-fixer 支持自动修复
* @prettier 可交由 prettier 控制
*/
semicolon: [true, 'always'],
/**
* @category style
* @description 函数名前必须有空格
* @has-fixer 支持自动修复
* @prettier 可交由 prettier 控制
*/
'space-before-function-paren': [true, 'asyncArrow'],
/**
* @category style
* @description 括号内首尾禁止有空格
* @has-fixer 支持自动修复
* @prettier 可交由 prettier 控制
*/
'space-within-parens': [true, 0],
/**
* @category style
* @description switch 的最后一项禁止有 break
* @reason 没必要限制
* @has-fixer 支持自动修复
*/
'switch-final-break': false,
/**
* @category style
* @description 字面类型的每个成员都必须有分号
* @ts-only 仅支持 ts 文件
*/
'type-literal-delimiter': true,
/**
* @category style
* @description 限制变量命名规则
* @reason 没必要限制
*/
'variable-name': false,
/**