tslint-config-chweb
-
adjacent-overload-signatures - 方法重载必须放在相邻的位置。详情
-
ban-ts-ignore - 禁止使用
// @ts-ignore
。详情 -
ban-types - 禁止使用特定的类型作为类型声明,如
Function
,Object
,String
,Number
等 JavaScript 构造函数,而应该使用() => void
,object
,string
,number
等 TypeScript 类型声明关键字。详情 -
member-access - 本规范关闭此规则。
本规范不强制在公共成员前面声明
public
关键字,但需注意,在TypeScript
中,默认是public
-
member-ordering - 本规范规定类成员属性的顺序:静态成员 应该在 实例成员 的前面。详情
-
no-any - 本规范关闭此规则。
在本规范中,在任何时候你都可以使用
any
声明类型,但是在大多数你明确知道类型结构的情况下应避免使用any
。 -
no-empty-interface - 禁止空的接口声明。
空的接口声明没有任何意义,应尽量避免。
-
no-inferrable-types - 禁止给已初始化为
number
,string
, 或boolean
类型的变量显示声明类型。详情 -
no-internal-module - 禁止声明内部的 module
-
no-magic-numbers - 本规范关闭此规则。
虽然本规范中并不强制要求必须规避“魔法数字”,但是使用
枚举类型
代替“魔法数字”能大大提高代码的可读性。了解什么是魔法数字?
-
no-namespace - 禁止声明内部的
module
s 和namespace
s,但可以使用declare
关键字将其申明为对外模块或命名空间。详情 -
no-non-null-assertion - 禁止使用
non-null
断言操作符!
。详情 -
no-parameter-reassignment - 禁止对函数的参数重新赋值。详情
-
no-reference - 本规范关闭此规则。
-
no-unnecessary-type-assertion - 禁止无用类型断言。详情
-
no-var-requires - 禁止使用
var module = require("module")
这种格式引入模块,应该使用 ES2015 的模块引入,或者import foo = require('foo')
。详情 -
only-arrow-functions - 必须使用箭头函数,除非函数声明或是命名函数。详情
-
prefer-for-of - 使用
for
循环遍历数组时,如果index
仅用于获取成员,则必须使用for of
循环替代for
循环。详情
- unified-signatures - 若两个重载函数能通过联合类型或可选参数或 rest 参数合并,则尽可能的合并。详情
-
await-promise -
await
后面的值必须是Promise
对象。详情 -
ban-comma-operator - 禁止使用逗号操作符。详情
-
ban - 指定应该禁止的方法或全局函数。
本规范无特殊配置,可根据需要指定应该禁止的特定方法或全局函数。详见
-
curly -
if
/for
/do
/while
语句必须使用大括号括起来,但允许在同一行的情况下省略花括号。详情 -
forin -
for ... in
语句中,必须使用if
语句过滤使用。详情 -
function-constructor - 禁止使用原生函数构造器(
Function
)创建函数。详情
-
label-position - 只能在
do/for/while/switch
语句中使用label
。JavaScript
中的标签只能与break
或continue
结合使用,这些结构用于循环流控制。 虽然理论上你可以在 JS 中的任何块语句中使用标签,但这样做被认为是糟糕的代码结构。 -
no-arg - 禁止使用
arguments.callee
。参考 MDN 了解为什么应避免使用
arguments.callee
。
-
no-conditional-assignment - 禁止在条件判断语句中赋值。
禁止在
do-while
,for
,if
,while
以及 三元表达式中的条件判断语句中进行赋值。实际上在条件判断语句中赋值大多是书写错误(如if (var1 = var2)
, 实际上你应该是想要if (var1 == var2)
),本规范能帮你找出这些书写错误。 -
no-console - 禁止使用的
console
方法。详情 -
no-construct - 禁止访问
String
,Number
, 和Boolean
构造器。详情 -
no-debugger - 禁止使用
debugger
语句。debugger
方法应避免出现在生产代码中。你可以在
tslint.json
中动态配置此规则:"no-debugger": process.env.NODE_ENV === 'production'
,并配合 webpack 的UglifyJsPlugin
插件来保证生产环境中没有debugger
相关的方法调用。 -
no-duplicate-super - 禁止在构造函数中重复调用
super()
。 -
no-duplicate-switch-case - 禁止在
switch
语句中出现重复的case
。 -
no-duplicate-variable - 禁止在同一块级作用域中出现相同的变量声明。
-
no-dynamic-delete - 禁止将
delete
操作符用于动态计算的key
。 -
no-empty - 禁止空的代码块。
-
no-eval - 禁止使用
eval
方法。
- no-for-in-array - 禁止对数组使用
for-in
来遍历元素。详情
- no-misused-new - 禁止在接口中定义
constructor
,或在类中定义new
。详情
- no-object-literal-type-assertion - 禁止对对象字面量进行类型断言(断言为
any
是允许的)。详情
-
no-shadowed-variable - 禁止变量名与上层作用域内的定义过的变量名重复。详情
-
no-sparse-arrays - 禁止在数组中出现连续的逗号。详情
-
no-string-literal - 若在没必要使用字符串字面量访问对象属性时,禁止使用字符串字面量访问属性。如允许
obj["prop-erty"]
,禁止obj["property"]
( 应该写为obj.property
)。 -
no-string-throw - 抛出异常时禁止直接抛出字符串,而应当抛出
Error
对象。详情
-
no-switch-case-fall-through -
switch
的case
必须return
或break
-
no-tautology-expression - 禁止将两个完全一样的变量或字面量做比较,如
'1' === '1'
,foo === foo
,1 > 1
。 -
no-this-assignment - 禁止将
this
赋值给其他变量,但允许对this
进行解构赋值。
-
no-unsafe-finally - 禁止在 finally 代码块中使用诸如
return
,continue
,break
和throws
的流程控制语句。详情 -
no-unused-expression - 禁止没使用的表达式。
-
no-var-keyword - 禁止使用
var
指令,应该使用let
和const
。 -
no-void-expression - 关闭此规则
- restrict-plus-operands - 使用
+
运算符的时候,前后变量的类型必须一样。详情
-
triple-equals - 除了与
null
比较外,必须使用===
或!==
,禁止使用==
或!=
,。 -
typeof-compare - 关闭此规则,
tsc
自带了此功能。
- use-isnan - 必须使用
isNaN(foo)
而不是foo === NaN
。
-
max-classes-per-file - 单个文件中只能定义 1 个类。
-
max-file-line-count - 单个文件代码不超过 1000 行。
- no-duplicate-imports - 禁止出现多条从同一个模块导入的语句,应该将其合并为一条语句。详情
-
prefer-const - 不再修改的变量必须使用
const
声明。 -
prefer-readonly - 如果私有成员变量在构造函数之外不会被修改,则必须使用
readonly
修饰符。
- array-type - 统一数组类型声明方式:简单类型的数组必须使用
T[]
, 复杂类型的数组必须使用Array<T | S>
。详情
- arrow-return-shorthand - 建议将
() => { return x; }
简写为() => x
。
- class-name - 必须使用
帕斯卡命名法
(即大驼峰命名法
)来命名类或接口。详情
- interface-over-type-literal - 避免使用
type
声明接口类型。详情
-
newline-per-chained-call - 链式调用的方法应另起一行。详情
-
no-angle-bracket-type-assertion - 禁止使用尖括号进行类型断言,应使用
as
关键字。
- no-reference-import - 如果导入过某个类型,禁止再使用
reference
(<reference types="foo" />
) 引用该类型。
- no-unnecessary-initializer - 禁止没必要的初始化。如
let
声明的变量不应该将其初始化为undefined
,因为他默认就是undefined
。详情
-
object-literal-key-quotes - 索引类型的对象,需要引号的
key
必须使用引号,不需要引号的key
一定不加引号。详情 -
object-literal-shorthand - 强制使用对象的简写方式。如
{ foo: foo }
应写为{ foo }
。 -
one-line -
else
,catch
,finally
,{
应该与上一个结束的花括号在同一行。 -
one-variable-per-declaration - 每个变量应单独声明,
let a,b,c;
这种是不允许的。详情 -
ordered-imports -
import
语句排序与分组。详情
-
prefer-method-signature - 方法声明应该这样声明:
foo(): void
,而不是foo: () => void
-
prefer-switch - 如果
if ... else if
语句中,对同一变量只使用了===
进行条件判断超过4
个,则应该使用switch
语句。
- space-before-function-paren - 函数左圆括号前的空格规则。
- variable-name - 变量名规范:禁止使用关键字作为变量名;驼峰命名法(lowerCamelCase);帕斯卡命名法(PascalCase);下划线开头的变量名(_leadingUnderscore);蛇形命名法(snake_case)。详情
-
align - 如果方法声明的参数,方法调用的参数,对象属性,数组以及类成员是纵向排列的话,一定要对齐。详情
本规范中的配置:
"align": [true, "parameters", "statements"]
-
arrow-parens - 箭头函数参数必须用圆括号括起来,但如果只有一个参数的话则不允许使用圆括号。详情
-
eofline - 每个文件必须以空行结尾。
-
import-spacing -
import
语句中的关键字(如import
,as
,*
,from
)之间应该有一个空格。详情 -
indent - 使用 2 空格 缩进。
-
jsdoc-format - JS 文档注释格式(以
/**
开头的注释)。详情
- max-line-length - 一行不能超过 120 个字的长度。
-
new-parens - new 一个对象时,必须使用圆括号。详情
-
no-consecutive-blank-lines - 禁止连续的空行
-
no-irregular-whitespace - 禁止特殊空白符(如全角空格)。
-
no-trailing-whitespace - 禁止结尾的空白符。
-
quotemark - 必须使用单引号,JSX 属性必须用双引号。详情
-
semicolon - 语句必须以分号结束。
-
trailing-comma - 对象和数组的最后一个元素的逗号:多行时必须有最后一个逗号,单行时不能有最后一个逗号。
-
typedef-whitespace - 类型标注的冒号左侧 一定没有 空格,右侧 一定有 空格。详情
-
whitespace - 其他的一些空白符规则。详情
-
no-constant-condition - 禁止在条件判断语句中使用常量表达式。详情
-
no-label - 禁止使用 label。