为什么要在 Vuex 状态定义中记录类型的惯用语是什么?
What's the idiomatic why to document the types in a Vuex state definition?
我们在一个组件中有一个相当大的状态,代码就像
export default {
someObject: {},
someOtherObject: {},
evenMore: []
<etc...>
}
没有任何类型,很难弄清楚发生了什么。我们目前无法使用 Typescript。有没有一种惯用的方式来使用例如JSDoc 来记录类型?像
export default {
/** @var SomeClass */
someObject: {},
/** @var SomeOtherClass
someOtherObject: {},
/** String[] */
evenMore: []
<etc...>
}
会不会太吵了?什么是标准的 Vue 实践?
编辑:这是一个例子:https://www.npmjs.com/package/jsdoc-vuex-plugin#the-state
/**
* The Vuex 'state' object.
* @name State
* @type {object}
* @property {boolean} boolProp This property is a boolean.
* @property {string} strProp This property is a string.
* @property {number} numProp This property is a number.
*/
这或多或少取决于您使用的 IDE。我正在使用 VSCode 并且它非常了解类型,我只需要在某些情况下进行明确的 jsdoc 注释。
所以使用导出默认值,而不是像这样导出对象:
export default {
/** @var SomeClass */
someObject: {},
/** @var SomeOtherClass
someOtherObject: {},
/** String[] */
evenMore: []
<etc...>
}
你需要做的:
const export_me = {
/** @var SomeClass */
someObject: {},
/** @var SomeOtherClass
someOtherObject: {},
/** String[] */
evenMore: []
}
export default export_me
对于函数,如果你不在参数中解构它们,你将需要做这样的事情
/**
@typedef {{
name: string,
age: number
}} Person
@param {Person} person
@param {number} speed
@returns {number}
*/
export function runningMan (person, speed) {
const {
name,
age
} = person;
}
我不使用 @property
因为它在 vscode 中不起作用。
我们在一个组件中有一个相当大的状态,代码就像
export default {
someObject: {},
someOtherObject: {},
evenMore: []
<etc...>
}
没有任何类型,很难弄清楚发生了什么。我们目前无法使用 Typescript。有没有一种惯用的方式来使用例如JSDoc 来记录类型?像
export default {
/** @var SomeClass */
someObject: {},
/** @var SomeOtherClass
someOtherObject: {},
/** String[] */
evenMore: []
<etc...>
}
会不会太吵了?什么是标准的 Vue 实践?
编辑:这是一个例子:https://www.npmjs.com/package/jsdoc-vuex-plugin#the-state
/** * The Vuex 'state' object. * @name State * @type {object} * @property {boolean} boolProp This property is a boolean. * @property {string} strProp This property is a string. * @property {number} numProp This property is a number. */
这或多或少取决于您使用的 IDE。我正在使用 VSCode 并且它非常了解类型,我只需要在某些情况下进行明确的 jsdoc 注释。
所以使用导出默认值,而不是像这样导出对象:
export default {
/** @var SomeClass */
someObject: {},
/** @var SomeOtherClass
someOtherObject: {},
/** String[] */
evenMore: []
<etc...>
}
你需要做的:
const export_me = {
/** @var SomeClass */
someObject: {},
/** @var SomeOtherClass
someOtherObject: {},
/** String[] */
evenMore: []
}
export default export_me
对于函数,如果你不在参数中解构它们,你将需要做这样的事情
/**
@typedef {{
name: string,
age: number
}} Person
@param {Person} person
@param {number} speed
@returns {number}
*/
export function runningMan (person, speed) {
const {
name,
age
} = person;
}
我不使用 @property
因为它在 vscode 中不起作用。