Visual studio code 如何将jsDoc与mobx状态树一起使用?
我试图在我的mobx状态树驱动的应用程序中使用jsDoc,但它的反应并不是我想要的 Visual studio代码未显示相应类型的正确属性: 当涉及到重构和保持js代码无bug时,jsDoc是一个巨大的帮助!但在这种情况下,我如何利用它呢 我发现了这个,但似乎没有人真正使用它:Visual studio code 如何将jsDoc与mobx状态树一起使用?,visual-studio-code,jsdoc,mobx-state-tree,Visual Studio Code,Jsdoc,Mobx State Tree,我试图在我的mobx状态树驱动的应用程序中使用jsDoc,但它的反应并不是我想要的 Visual studio代码未显示相应类型的正确属性: 当涉及到重构和保持js代码无bug时,jsDoc是一个巨大的帮助!但在这种情况下,我如何利用它呢 我发现了这个,但似乎没有人真正使用它: 我真的很想知道其他开发者是如何处理这个问题的 您的项目可能缺少一个jsconfig.json文件 例如,给定项目树 . ├── jsconfig.json ├── package-lock.json ├── pack
我真的很想知道其他开发者是如何处理这个问题的 您的项目可能缺少一个
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
文档
我不知道有哪种工具能马上做到这一点
您可以使用共享的工具,然后在模型更新时进行更新 问题在于您的jsDoc不是引用类型的实例,而是引用类型本身 请尝试以下方法:
/**
* @param {typeof Step.Type} step
*/
async applyStep(step){}
或者(如本手册的typescript部分所述):
/**
*@param{Instance}步骤
*/
异步applyStep(步骤){}
您正在使用typescript吗?不,我没有。我不想迁移我的项目…问题不是代码完成不起作用,问题是它显示了错误的完成结果(参见屏幕截图)。这与mobx状态树有很大关系(其他代码工作得非常好),您是正确的。我认为最接近的方法是手动显式地记录类型定义,或者是共享工具的更新版本,以及vscode中的自定义任务,以自动化该过程。
/**
* @param {Instance<typeof Step>} step
*/
async applyStep(step){}