npm 包 @gooddata/tslint-config 使用教程

阅读时长 15 分钟读完

@gooddata/tslint-config 是 GoodData 自己使用的 TSLint 配置,该配置包含了 GoodData 的代码规范以及最佳实践。本文将介绍如何在前端项目中集成 @gooddata/tslint-config 这个 npm 包。同时,我们会详细介绍每个配置项的意义和使用建议。

安装

在项目根目录下执行以下命令安装该 npm 包:

配置 TSLint

在项目根目录下创建一个 tslint.json 配置文件,并将以下内容复制进去:

这里通过 "extends" 属性继承了 @gooddata/tslint-config 的配置项。当然,在这之前你需要确保安装了 tslint。如果没有,可以执行以下命令:

配置项

接下来,我们将详细介绍 @gooddata/tslint-config 包含的配置项及其意义和使用建议。

align

意义:强制对齐符号的位置。

使用建议:将对齐符号 =:( 等归纳在一起,有助于代码的可读性。

示例代码

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

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

ban

意义:禁止使用特定的函数或属性。

使用建议:在某些情况下,某些函数或属性可能有潜在的风险或已被废弃,禁止使用能有效避免不必要的错误和浪费。

示例代码

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

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

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

class-name

意义:强制驼峰式命名。

使用建议:驼峰式命名法是一种通用的命名规范,有助于提高代码的可读性、可维护性以及跨平台兼容性。

示例代码

comment-format

意义:强制注释的格式。

使用建议:统一注释的格式,有助于代码的可读性以及跨平台兼容性。

示例代码

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

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

completed-docs

意义:强制注释文档的完整性。

使用建议:编写完整的注释文档有助于其他开发人员理解代码、方便后续维护。需要注意的是,完整的注释文档应当包括函数或类的参数、返回值、用法示例等信息。

示例代码

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

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

curly

意义:强制使用花括号包裹语句块。

使用建议:使用花括号包裹语句块可以提高代码的可读性和可维护性,避免出现意外的结果。

示例代码

cyclomatic-complexity

意义:限制函数的圈复杂度。

使用建议:圈复杂度是衡量函数复杂度的一种方法,通常认为圈复杂度超过 10 时就需要重构。限制函数的圈复杂度有助于降低代码的复杂度,提高代码的可读性和可维护性。

示例代码

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

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

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

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

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

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

import-spacing

意义:强制导入语句的空格使用。

使用建议:统一导入语句的空格使用,有助于提高代码的可读性和美观度。

示例代码

interface-name

意义:强制大写字母开头的接口名称。

使用建议:大写字母开头的接口名称有助于提高代码的可读性和可维护性,避免与变量或函数名称混淆。

示例代码

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

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

member-access

意义:强制对类成员的访问范围进行显示声明。

使用建议:显示声明类成员的访问范围有助于提高代码的可读性和可维护性。

示例代码

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

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

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

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

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

no-consecutive-blank-lines

意义:限制连续的空白行。

使用建议:适当使用空白行可以提高代码的可读性,但过多的空白行则会降低代码的紧凑性和美观度。

示例代码

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

--------

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



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

no-construct

意义:禁止直接调用构造器。

使用建议:直接调用构造器可能会导致未知的副作用,应该使用工厂函数或静态方法来创建对象。

示例代码

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

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

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

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

no-duplicate-case

意义:禁止 switch 语句中重复的 case 语句。

使用建议:重复的 case 语句可能会导致意外的结果,应该避免使用。

示例代码

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

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

no-duplicate-parameter-names

意义:禁止函数参数中重复的名称。

使用建议:重复的参数名称会导致命名冲突,应该避免使用。

示例代码

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

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

no-eval

意义:禁止使用 eval() 函数。

使用建议eval() 函数会将字符串转换为可执行的代码,可能会导致意外的结果和安全隐患,应该禁止使用。

示例代码

no-implicit-dependencies

意义:禁止隐式的依赖导入。

使用建议:显式声明依赖关系有助于提高代码的可读性和可维护性,避免出现意外的错误和冲突。

示例代码

no-return-await

意义:禁止在返回语句中使用 await

使用建议:在返回语句中使用 await 可能会导致意外的结果,长度代码可读性,应该禁止使用。

示例代码

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

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

no-this-assignment

意义:禁止将 this 分配给局部变量。

使用建议:将 this 分配给局部变量可能会导致出现意外的问题和错误,应该避免使用。

示例代码

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

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

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

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

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

no-unconditional-jump

意义:禁止不带条件的跳转语句。

使用建议:不带条件的跳转语句可能会造成意外的结果和执行异常,应该避免使用。

示例代码

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

  -------
-

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

no-unsafe-any

意义:禁止使用 any 类型。

使用建议:使用 any 类型可能会导致安全隐患和代码的不可预测性,应该尽量避免使用。

示例代码

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

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

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

no-var-requires

意义:禁止使用 require 语句。

使用建议require 语句只适用于 Node.js 环境下,不适用于浏览器环境,应该使用 import 语句代替。

示例代码

object-literal-key-quotes

意义:要求对象字面量属性名使用引号。

使用建议:为对象字面量属性名使用引号有助于统一代码风格和规范,可读性更佳。

示例代码

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

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

object-literal-sort-keys

意义:强制对象字面量属性的排序顺序。

使用建议:强制对象字面量属性的排序顺序有助于统一代码风格和规范,可读性更佳。

示例代码

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

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

only-arrow-functions

意义:强制使用箭头函数。

使用建议:箭头函数是一种简洁、清晰的函数表达式,使用箭头函数可以提高代码的可读性和可维护性。

示例代码

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

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

prefer-const

意义:建议使用 const 声明变量。

使用建议:使用 const 声明变量可以保证变量不会被修改,有助于减少意外的错误和冲突。

示例代码

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

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

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

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

prefer-method-signature

意义:强制使用方法签名而非属性签名。

使用建议:使用方法签名可以保持代码的一致性和易读性,提高代码的可维护性。

示例代码

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

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

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

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

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

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

prefer-template

意义:强制使用模板字符串。

使用建议:使用模板字符串可以简化代码,提高代码的可读性和可维护性

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/they-tslint-config