Javascript ES6代码完成(Intellisense),在VSCode中合成
当使用以下语法在es6中嵌套类时,我试图让代码完成工作:Javascript ES6代码完成(Intellisense),在VSCode中合成,javascript,ecmascript-6,visual-studio-code,intellisense,composition,Javascript,Ecmascript 6,Visual Studio Code,Intellisense,Composition,当使用以下语法在es6中嵌套类时,我试图让代码完成工作:classdog extensedsfoodmixin(Animal)。第一个实现工作得很好,让我能够自动完成FoodMixin和Animal。但是,如果我将其嵌套得更深,或者应用第二个mixin,则自动完成将停止。例如:类Dog扩展了OtherMixin(FoodMixin(Animal))将丢失FoodMixin类的代码完成 有没有办法让intellisense同时为OtherMixin和FoodMixin工作 简单测试代码: cons
classdog extensedsfoodmixin(Animal)
。第一个实现工作得很好,让我能够自动完成FoodMixin和Animal。但是,如果我将其嵌套得更深,或者应用第二个mixin,则自动完成将停止。例如:类Dog扩展了OtherMixin(FoodMixin(Animal))
将丢失FoodMixin类的代码完成
有没有办法让intellisense同时为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
VS代码的JavaScript IntelliSense将无法理解类似于该示例的非常动态的代码。您链接到的教程提供了这段代码,它太聪明了,不利于自己(或任何人) 但是,您可以通过使用JSDoc为示例中使用的类型和接口添加显式类型注释,来解决代码的限制:
/**
*@typedef{{eat():void}Eater
*/
/**
*@typedef{{test():void}}Tester
*/
/**
*@type{Dog&Eater&Tester}
*/
const dog=新狗();
狗。
&
不是标准的JS文档类型语法,而是一个from类型脚本。(我在这里使用它是因为它模仿了构图)这不是对你问题的直接回答,但不这样使用继承可能有些道理。这样的继承链通常会导致难以测试和维护的代码。如果你有兴趣进一步学习的话,有很多关于组合与继承的文献。我建议你永远不要像上面的例子那样编写代码。您试图以vscode和人类难以理解的方式混合组合和继承@Peter明白了,这意味着我遵循的以下教程建议了一些不好的做法:?如果是这样,我将如何使用支持intellisense的ES6遵循合成模式?我似乎找不到好的教程。。