簡體   English   中英

VSCode中的ES6代碼完成(Intellisense)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM