javascript - ES6早期使用类

标签 javascript ecmascript-6 eslint

我在 ES6 中有两个相互需要的类。代码在这里(我使用 Meteor.js);

export class Activity {
  constructor(doc) {
    _.extend(this, doc);
  }
  getSubActivities() {
    return Activities.find({ parent: this._id }).fetch();
  }
}

class ActivitiesCollection extends Mongo.Collection {
  /* nothing relevant */
}

export const Activities = new ActivitiesCollection('appjournalActivities', {
  transform(doc) {
    return new Activity(doc);
  },
});

代码工作正常。但 linter 不喜欢我在定义之前使用 Activities ( error description at eslint.org )。

我使用了错误的模式/代码结构吗? ES6 中有标准解决方案吗?

一种解决方案如下(有效):

export let Activities = null;
/* code as before */
Activities = new ActivitiesCollection('appjournalActivities', {
/* code as before */

但是我不太喜欢它。

最佳答案

The code works properly. But the linter does not like it.

然后修改 linter,或者禁用该特定规则:-)

Am I using a wrong pattern/code structure?

没有。如果你有循环依赖,这几乎是不可避免的。

Is there a standard solution in ES6?

您可以将它们放在单独的模块中,这只会将循环依赖关系从范围提升到模块级别,但 es-lint 可能无法检测到。

关于javascript - ES6早期使用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37144786/

相关文章:

javascript - 类中的 Pre ES6 静态函数

javascript - 向表格动态添加文本时无法显示分页表格 View

javascript - 设置状态和过滤。跳过数据 - React/Javascript

eslint - `no-unused-vars` 的误报

javascript - 嵌套 reducer

JavaScript 替换 html 内容

javascript - tinyMCE 选择器最初不加载文本区域

javascript - 为 require() 库定义配置变量

typescript - 为什么 TypeScript 的 'declare global' 会导致 ESLint 错误?

typescript - @typescript-eslint/naming-convention @emotion 样式文件的自定义配置