[英]ES6 code completion (Intellisense) with composition in VSCode
我正在嘗試使用以下語法在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
VS Code的JavaScript IntelliSense將無法理解像該示例這樣的非常動態的代碼。 您所鏈接的教程提供的這段代碼太聰明了,以至於它本身(或任何人)都沒有。
但是,您可以通過使用JSDoc為示例中使用的類型和接口添加顯式類型注釋來解決VS Code的局限性:
/**
* @typedef {{ eat(): void }} Eater
*/
/**
* @typedef {{ test(): void }} Tester
*/
/**
* @type {Dog & Eater & Tester}
*/
const dog = new Dog();
dog.
&
不是標准的JS Doc類型語法,而是TypeScript中的交集類型 。 (我在這里使用它是因為它模仿成分)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.