ES6早期使用类

ES6 early use of classes

本文关键字:ES6      更新时间:2023-09-26

我在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之前使用它(错误描述在eslint.org)

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

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

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

但是我不太喜欢它。

代码工作正常。但是门楣不喜欢。

然后拧上门楣,或者禁用特定规则:-)

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

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

ES6中有标准解决方案吗?

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

相关文章:
  • 没有找到相关文章