我在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 */
但我不太喜欢它。
答案 0 :(得分:2)
代码正常运行。但是短绒不喜欢它。
然后拧紧linter,或禁用该特定规则: - )
我使用了错误的模式/代码结构吗?
没有。如果你有循环依赖,这几乎是不可避免的。
ES6中是否有标准解决方案?
您可以将它们放在单独的模块中,这只会将循环依赖关系从范围提升到模块级别,但可能不会被es-lint检测到。