npm 包 @whitetrefoil/vuex-type-helpers 使用教程

阅读时长 6 分钟读完

@whitetrefoil/vuex-type-helpers 是一个用于 Vuex 的 TypeScript 工具包,它可以使 Vuex 的 type 定义变得更易读、更易用,同时提供了一些有用的辅助函数,使得代码的可维护性得到了提高。

安装

你可以通过 npm 或 yarn 安装该包:

使用

安装完成后,你可以像这样使用该库:

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

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

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

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

该模块建议与 Vuex 3.x 配合使用(在 Vuex 4.x 中可能会存在类型兼容性问题)。

这段代码声明了一个状态对象包含一个名为 count 的数字属性,接着通过 ModuleBuilder 类初始化构建模块,并通过链式调用 gettermutation 方法添加 Vuex 的 getter 和 mutation 函数。

最后通过 build 方法生成 Vuex module。

辅助函数

@whitetrefoil/vuex-type-helpers 中提供了许多辅助函数,接下来我们来分别介绍这些函数。

assert

该函数用于帮助我们断言类型,主要有以下两种使用方式:

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

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

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

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

可以看到,assert 函数的泛型参数用于断言该变量的值,你可以通过编辑器快速得到该变量所具有的类型,从而避免由于 typescript 类型漏洞带来的问题。

identity

该函数是一个简单的 helper 函数,用于返回参数本身,通常用于 mapGetters 的参数中。示例:

getPayload

该函数用于从 Vuex 的 action 载体中获取参数。示例:

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

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

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

该函数的泛型参数用于断言参数类型。

MultiGetters

该集合类提供了一些有用的辅助函数作为 getters 中的函数,分别为:

  • first: 获取集合中的第一个对象。
  • pick: 返回集合对象中指定的属性的值。示例:this.pick('a', 'c') 返回一个新对象,只包含 ac 属性。
  • exclude: 返回从集合对象中排除指定键的新对象。示例:this.exclude('a', 'c') 返回一个新对象,不包含 ac 属性。
  • union: 返回两个对象的并集。

示例:

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

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

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

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

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

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

UnionBuilder

UnionBuilder 是一个用于生成联合类型的辅助类:

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

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

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

这段代码声明了一个联合类型 t 注释中的 |,实际上在使用中是可以通过自动补全在 x 变量上选择 number 或 string 类型的。

总结

@whitetrefoil/vuex-type-helpers 可以使用其提供的辅助类和辅助函数来生成更具可维护性和内在的 Vuex Store,在维护复杂的项目生命周期中可以为开发者节省时间和精神。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6006735a890c4f7277583e8e

纠错
反馈