npm 包 tslint-misc-rules 使用教程

tslint-misc-rules 是一个扩展了 TSLint 的规则集合,它包含了一些常用但不在 TSLint 默认规则中的检查项,以提高代码质量。本文将详细介绍如何安装和使用这个 npm 包,并提供示例代码。

安装

首先,你需要在项目目录下安装 TSLint 和 tslint-misc-rules:

--- ------- ---------- ------ -----------------

然后,在项目根目录下创建 tslint.json 文件,并添加 tslint-misc-rules:

-
  ---------- ----------------------
  -------- -
    -- --------------
  -
-

现在,你已经成功地将 tslint-misc-rules 集成到你的项目中了!

规则列表

以下是 tslint-misc-rules 提供的规则列表:

  • no-constant-condition: 禁止使用带有常量条件语句(例如 if (true))。
  • no-empty-block: 禁止空块语句(例如 {})。
  • no-eval: 禁止使用 eval() 函数。
  • no-unconditional-jump: 禁止出现不带条件的跳转语句(例如 goto)。
  • no-duplicate-case: 禁止 switch 语句中出现重复的 case 标签。
  • no-duplicate-parameter-names: 禁止函数参数名重复。
  • no-empty-interface: 禁止空接口。
  • no-import-side-effect: 禁止在导入模块时进行副作用操作。
  • no-inferrable-types: 禁止给基础类型显式指定可推断的类型。
  • no-misused-new: 禁止不必要的构造函数调用。
  • no-null-keyword: 禁止使用 null 关键字。
  • no-this-assignment: 禁止将 this 赋值给变量。
  • prefer-const-enum: 优先使用 const 枚举。

示例代码

假设我们有以下 TypeScript 代码:

-- ------ -
  -- ---
-

-------- ------ ------- -- ------- -- ------- -
  -- ---
-

--------- --- --

------ --------

----- ---- ------ - --

--- ---------

--- --
------ - --

---- ------ -
  - - ----
  - - ---
-

如果我们运行 TSLint(假设已经配置好),你会发现它只会检测到一些常见的问题,比如变量没有使用、未声明的变量等等。但是,它并不会识别出像 if (true)function foo(a: number, b: number, a: number)interface Bar {} 这些问题。

接下来,我们将引入 tslint-misc-rules 来解决这些问题。首先,我们需要在 tslint.json 中添加规则:

-
  ---------- ----------------------
  -------- -
    ------------------------ -----
    ------------------------------- -----
    --------------------- -----
    ------------------------ -----
    ---------------------- -----
    ----------------- -----
    ------------------ -----
    --------------------- -----
    -------------------- ----
  -
-

现在,如果我们再次运行 TSLint,你会发现它会检查并报告出现的问题。例如:

------ ---------------------------------------- ---- ---------- ---- --- --- -------- ---------- -----------------------
------ ----------------------------------------------- --------- --------- ---- --- ------------------------------
------ ------------------------------------- --- -- ----- --------- -- ---------- --------------------
------ ---------------------------------------- --------- ----- ---- ------------ -- ---------- -

- ----------------------------------------------------------- --------
---------------------------------------------------------------------------------------