ES6早期使用课程

时间:2016-05-10 17:04:07

标签: 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不喜欢我在定义它之前使用Activitieserror description at eslint.org)。

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

以下一个解决方案(可行):

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

但我不太喜欢它。

1 个答案:

答案 0 :(得分:2)

  

代码正常运行。但是短绒不喜欢它。

然后拧紧linter,或禁用该特定规则: - )

  

我使用了错误的模式/代码结构吗?

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

  

ES6中是否有标准解决方案?

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