gpt4 book ai didi

javascript - ES6 代码完成(Intellisense)与 VSCode 中的组合

转载 作者:行者123 更新时间:2023-11-30 19:19:42 25 4
gpt4 key购买 nike

当使用以下语法在 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 为示例中使用的类型和接口(interface)添加显式类型注释来解决 VS Code 的限制:

/**
* @typedef {{ eat(): void }} Eater
*/

/**
* @typedef {{ test(): void }} Tester
*/

/**
* @type {Dog & Eater & Tester}
*/
const dog = new Dog();
dog.

enter image description here

& 不是标准的 JS Doc 类型语法,而是 intersection type来自 typescript 。 (我在这里使用它是因为它模仿了构图)

关于javascript - ES6 代码完成(Intellisense)与 VSCode 中的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57611901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com