我正在尝试将 jsDoc 用于我的 mobx-state-tree 驱动的应用程序,但它并没有按照我想要的方式做出反应。
Visual Studio 代码没有向我显示相应类型的正确属性:
jsDoc 在重构和保持 js 代码无缺陷方面提供了巨大的帮助!但是在这种情况下我该如何利用它呢?
我发现了这个,但似乎没有人真正使用它: https ://github.com/Feverqwe/mst-jsdoc-gen
我真的很想知道其他开发人员是如何处理这个问题的!
我正在尝试将 jsDoc 用于我的 mobx-state-tree 驱动的应用程序,但它并没有按照我想要的方式做出反应。
Visual Studio 代码没有向我显示相应类型的正确属性:
jsDoc 在重构和保持 js 代码无缺陷方面提供了巨大的帮助!但是在这种情况下我该如何利用它呢?
我发现了这个,但似乎没有人真正使用它: https ://github.com/Feverqwe/mst-jsdoc-gen
我真的很想知道其他开发人员是如何处理这个问题的!
问题是您的 jsDoc 不是指类型的实例,而是指类型本身。
试试这个:
/**
* @param {typeof Step.Type} step
*/
async applyStep(step){}
或者这个(正如文档的打字稿部分所指出的那样):
/**
* @param {Instance<typeof Step>} step
*/
async applyStep(step){}
您的项目可能缺少一个将jsconfig.json
其定义为 Visual Studio Code 的 Javascript 项目。
例如,给定项目树
.
├── jsconfig.json
├── package-lock.json
├── package.json
├── src
│ ├── step.js
│ └── test.js
└── yarn.lock
Injsconfig.json
定义如下,
{
"compilerOptions": {
"module": "commonjs",
"target": "es6"
},
"include": ["src/**/*"],
"checkJs": true,
"allowSyntheticDefaultImports": true
}
allowSyntheticDefaultImports
配置很重要,因为它允许在项目的 Javascript 模块中未导出的符号的代码提示。
要获得 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
*/
我认为人们可以更进一步编写一个typedef
为模型动态生成此文档的钩子。
我不知道有什么工具可以立即执行此操作。
您可以分叉您共享的工具,对其进行更新,然后在 Visual Studio Code 中配置一个自定义任务,以便在模型更新时运行它。