为什么要在Vuex状态定义中记录类型呢?

问题描述 投票:0回答:1

我们在一个组件中有一个很大的状态,代码类似于

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.
 */
vue.js types vuex documentation jsdoc
1个回答
0
投票

或多或少取决于您所使用的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中不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.