我正在尝试将jsDoc用于由mobx-state-tree驱动的应用程序,但它并没有按照我想要的方式进行响应。
Visual Studio代码没有向我显示相应类型的正确属性:
jsDoc在重构和保持js代码无bug方面是一个巨大的帮助!但是在这种情况下如何使用呢?
我发现了这一点,但似乎没有人真正使用它: https://github.com/Feverqwe/mst-jsdoc-gen
我真的很想知道其他开发者如何处理这个问题!
我正在尝试将jsDoc用于由mobx-state-tree驱动的应用程序,但它并没有按照我想要的方式进行响应。
Visual Studio代码没有向我显示相应类型的正确属性:
jsDoc在重构和保持js代码无bug方面是一个巨大的帮助!但是在这种情况下如何使用呢?
我发现了这一点,但似乎没有人真正使用它: https://github.com/Feverqwe/mst-jsdoc-gen
我真的很想知道其他开发者如何处理这个问题!
问题在于您的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 Code的jsconfig.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模块中导出的符号。
要获得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
文档。
我不知道有什么工具可以立即执行此操作。
您可以派生共享的工具,然后在模型更新时configure a custom task in Visual Studio Code to run it对其进行更新。