如何将jsDoc与mobx-state-tree一起使用?

我正在尝试将jsDoc用于由mobx-state-tree驱动的应用程序,但它并没有按照我想要的方式进行响应。

Visual Studio代码没有向我显示相应类型的正确属性:

如何将jsDoc与mobx-state-tree一起使用?

jsDoc在重构和保持js代码无bug方面是一个巨大的帮助!但是在这种情况下如何使用呢?

我发现了这一点,但似乎没有人真正使用它: https://github.com/Feverqwe/mst-jsdoc-gen

我真的很想知道其他开发者如何处理这个问题!

b342874914 回答:如何将jsDoc与mobx-state-tree一起使用?

问题在于您的jsDoc不是引用类型的实例,而是类型本身。

尝试以下方法:

/**
 * @param {typeof Step.Type} step
 */
async applyStep(step){}

或者这个(如docs的打字稿部分所指出):

/**
 * @param {Instance<typeof Step>} step
 */
async applyStep(step){}
,

您的项目可能缺少defines it to be a Javascript project to Visual Studio Codejsconfig.json

例如,给定的项目树

.
├── jsconfig.json
├── package-lock.json
├── package.json
├── src
│   ├── step.js
│   └── test.js
└── yarn.lock

jsconfig.json中定义以下内容,

{
    "compilerOptions": {
      "module": "commonjs","target": "es6"
    },"include": ["src/**/*"],"checkJs": true,"allowSyntheticDefaultImports": true
}

allowSyntheticDefaultImports配置很重要,因为它允许代码提示未在项目的Javascript模块中导出的符号。

Showing code hints upon adding jsconfig.json

要获得mobx状态树模型的类型提示,可以显式记录typedef。例如,

import { types } from "mobx-state-tree"


const Step = types.model({
    level: types.number,strength: types.number
})

 /**
 * @typedef Step
 * @property {Number} level
 * @property {Number} strength
 */

type hints for mobx-state-tree models after typedef

我认为,可以进一步编写一个钩子,该钩子为模型动态生成此typedef文档。

我不知道有什么工具可以立即执行此操作。

您可以派生共享的工具,然后在模型更新时configure a custom task in Visual Studio Code to run it对其进行更新。

本文链接:https://www.f2er.com/3143570.html

大家都在问