[英]ES6 early use of classes
我在 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 */
但我不是很喜欢它。
代码工作正常。 但是 linter 不喜欢它。
然后拧紧linter,或禁用该特定规则:-)
我是否使用了错误的模式/代码结构?
不。如果您有循环依赖,这几乎是不可避免的。
ES6 有标准的解决方案吗?
您可以将它们放在单独的模块中,这只是将循环依赖从作用域提升到模块级别,但可能不会被 es-lint 检测到。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.