【发布时间】:2019-08-22 14:41:48
【问题描述】:
我正在尝试使用以下语法在 es6 中嵌套类时使代码完成工作:class Dog extends FoodMixin(Animal)。第一个实现工作正常,让我自动完成 FoodMixin 和 Animal。但是,如果我将其嵌套更深,或应用第二个 mixin,则自动完成将停止。例如:class Dog extends OtherMixin(FoodMixin(Animal)) 将丢失 FoodMixin 类的代码补全。
有没有一种方法可以让智能感知同时适用于 OtherMixin 和 FoodMixin?
简单测试代码:
const FoodMixin = superclass => class extends superclass {
eat() {
console.log("Eating");
}
};
const OtherMixin = superclass => class extends superclass {
test() {
console.log("Hello");
}
};
class Animal {
}
class Dog extends OtherMixin(FoodMixin(Animal)){
}
const dog = new Dog();
dog.test(); //INTELLISENSE WORKS
dog.eat(); //INTELLISENSE DOES NOT WORK
【问题讨论】:
-
不是您问题的直接答案,但对于不以这种方式使用继承可能有一些话要说。像这样的继承链通常会导致代码难以测试和维护。如果您有兴趣进一步学习,这里有很多关于组合与继承的文献。
-
我建议你永远不要像上面的例子那样写代码。您正在尝试以 vscode 和人类难以理解的方式混合组合和继承。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
@Peter Gotcha,这意味着我遵循的以下教程建议了不良做法:alligator.io/js/class-composition ?如果是这样,我将如何使用支持智能感知的 ES6 遵循组合模式?我似乎找不到好的教程..
标签: javascript ecmascript-6 visual-studio-code intellisense composition