将上下文绑定到其他内容后,如何让 VsCode 代码建议起作用?

我有这门课:


class Cat {

  name = 'Mr. Kitten';

  /**

   * A list of names

   */

  namesList = ['Bob', 'Snow'];


  changeName() {

    this.name = this.getNameFromList();

  }

  getNameFromList() {

    return this.namesList[0];

  }

}

在这个例子中,VsCode 从getNameFromList()方法内部的“this”上下文中提出建议。如果我将鼠标悬停namesList在该方法内的变量上,则会显示我对该变量的 JSDocs 注释。显示变量的类型。一切安好。但是如果我重构这段代码在getNameFromList里面创建一个函数changeName,就像这样:


class Cat {

  name = 'Mr. Kitten';

  /**

   * A list of names

   */

  namesList = ['Bob', 'Snow'];


  changeName() {

    this.name = getNameFromList.bind(this)();


    function getNameFromList() {

      return this.namesList[0];

    }

  }

}

现在 VsCode 不再为this.namesListinside建议任何内容getNameFromList,因为this现在指的是不同的上下文,而 VsCode 不可能知道我this每次调用该函数时都会进行绑定。由于我将始终使用 调用该函数.bind(this),因此我希望 VsCode 显示来自该上下文的建议。


有什么方法可以让 VsCode 知道该this函数的内部将始终绑定到某个其他上下文,以便我可以获得自动完成和getNameFromList再次在内部工作的建议?


慕村9548890
浏览 159回答 1
1回答

当年话下

尝试使用 jsdocthis注释来明确说明的类型this:class Cat {  name = 'Mr. Kitten';  /**   * A list of names   */  namesList = ['Bob', 'Snow'];  changeName() {    this.name = getNameFromList.bind(this)();    /** @this {Cat} */    function getNameFromList() {      return this.namesList[0];    }  }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript