使用 redux 和 redux-toolkit 操作函数调用函数时,JSDoc 注释的显示方式不同

问题描述 投票:0回答:1

经过多年的老派从头开始 Redux 后,我正在尝试 Redux 工具包。使用

createSlice
,我定义了我的操作,并带有一些 JSDoc 注释:

export const viewBuilderSlice = createSlice({
  name: "views",
  initialState,
  reducers: {
    /**
     * Action to set all view layers in a single function call,
     * helpful for loading saved view into the map viewer
     */
    SetViewLayers: (state, action: PayloadAction<string[]>) => {
      // do reducer stuff
    },
    /**
     * Toggle a single layer on or off in the current view
     */
    ToggleViewLayer: (state, action: PayloadAction<string>) => {
      // do reducer stuff
    },
  },
});

export const { SetViewLayers, ToggleViewLayer } = viewBuilderSlice.actions;
export const viewBuilderReducer = viewBuilderSlice.reducer;

将鼠标悬停在倒数第二行,我看到我的 JSDoc 注释:

然后当我将动作导入到要调用的文件中时,在导入行上,我仍然看到我自己的注释

但是当我然后去 call

dispatch
中的函数时,我写的 JSDoc 注释似乎被一些通用的 redux-toolkit 注释覆盖了:

我想这可能是使用

createSlice
并导出解构动作的功能,所以我尝试使用
createAction
独立定义动作:

/**
 * Action to set all view layers in a single function call,
 * helpful for loading saved view into the map viewer
 */
export const ToggleViewLayer2 = createAction<string>("views/TOGGLE_VIEW_LAYER");

但是然后将其导入到另一个要使用的文件中,会出现完全相同的问题 - 在

import
行上,我的 JSDoc 被保留,但随后调用
dispatch(ToggleViewLayer2)
,将鼠标悬停在
ToggleViewLayer2()
上会显示 redux 的 JSDoc 注释。

这里有什么?对于明确记录的函数,只有在“调用”它们时,外部包自己的 JSDoc 注释如何以及为什么会覆盖我自己的注释? JSDoc 注释的一半目的是帮助我自己或其他开发人员理解该函数的作用,但是当 redux 的 JSDocs 注释掩盖了我自己的注释,或者 JSDoc 注释在声明函数和调用它之间发生变化时,它就没有帮助。

redux comments redux-toolkit jsdoc
1个回答
0
投票

老实说,注释能做到这么远(从减速器到动作创建者)真是一个奇迹 - TypeScript 过去没有保留对映射类型的注释。

对于您手头的问题:它将注释附加到映射属性的类型,但不附加到显式函数重载。

看这个例子:

/** A function overload comment */ function foo(){} const obj = { /** A property comment */ foo: foo } // these two have different comments obj.foo obj.foo()

© www.soinside.com 2019 - 2024. All rights reserved.