Jak*_*ron 5 javascript intellisense composition ecmascript-6 visual-studio-code
我尝试使用下面的语法在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
Run Code Online (Sandbox Code Playgroud)
VS Code 的 JavaScript IntelliSense 将无法理解像该示例那样的非常动态的代码。您链接到的提供此代码的教程对于它自己(或实际上任何人)的好处来说太聪明了。
不过,您可以通过使用 JSDoc 为示例中使用的类型和接口添加显式类型注释来解决 VS Code 的限制:
/**
* @typedef {{ eat(): void }} Eater
*/
/**
* @typedef {{ test(): void }} Tester
*/
/**
* @type {Dog & Eater & Tester}
*/
const dog = new Dog();
dog.
Run Code Online (Sandbox Code Playgroud)
这&不是标准的 JS Doc 类型语法,而是TypeScript 的交集类型。(我在这里使用它是因为它模仿构图)
| 归档时间: |
|
| 查看次数: |
803 次 |
| 最近记录: |