最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何使用 Node.js 在 JSDoc 中将 typedef 从一个文件“导入”到另一个文件?

网站源码admin39浏览0评论

如何使用 Node.js 在 JSDoc 中将 typedef 从一个文件“导入”到另一个文件?

如何使用 Node.js 在 JSDoc 中将 typedef 从一个文件“导入”到另一个文件?

假设我有一个名为“File1.js”的文件。在这个文件中,我导出一个对象的对象,我给每个对象一个 typedef,就像这样。

/**
 * My typedef for each object.
 * @typedef {Object} MyObject1
 * @property {String} username Your username
 * @property {String} realname Your real name.
 * @property {boolean} isUnique Are you unique as a person?
 */
module.exports = {
  /**
   * Person One!
   * @type {MyObject1}
   */
  myperson: {
    username: 'TheDragonSlayer',
    realname: 'George',
    isUnique: true
  },
  /**
   * Person Two!
   * @type {MyObject1}
   */
  myperson2: {
    username: 'BobMagee',
    realname: 'Bob',
    isUnique: false
  }
}

现在,在一个名为“File2.js”的文件中,我在构造函数中引用了这个对象并将其设置为一个新的

MyObject1
.

const persons = require('./File1.js');

class File2 {
  constructor(options = {}) {
    /**
     * The person for this file.
     * @type {MyObject1}
     */
    this.person = options.person ? persons[options.person] : persons.myperson2;
  }
}

module.exports = File2;

我使用 Visual Studio Code 进行开发,因此通过按 Ctrl+Space 我可以获得 IntelliSense。在第一个文件中,当我制作人物对象时,IntelliSense 告诉我 username 是一个字符串,realname 是一个字符串,而 isUnique 是一个布尔值。但是,当我进入 file2 并通过

this.person
引用新创建的人时,当键入
this.person.username
时,它不会出现“用户名:字符串”的预期结果。

是否可以在普通 Node.js 的 File2 中使用 typedef

MyObject1
,还是我运气不好?

编辑:有了更多信息,我能够找到 @export 和 @import for TypeScript 的答案,以及我也尝试过的各种标签。所有这些都无济于事。我还尝试将 File1.js 标记为 @module,并执行

module:mymodule~MyMethod
,但每次我这样做时,它只会将 this.person 标记为 NodeModule 而不是方法本身。

回答如下:

使用函数

File2.js
.
 在文件中导入声明的类型 
import

const persons = require('./File1.js');

/**
 * @typedef {import('./File1.js').MyObject1} MyObject1
 */

class File2 {
...

对我有用。

发布评论

评论列表(0)

  1. 暂无评论