为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕村9548890 2021-11-18 16:33:00
我有这门课: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再次在内部工作的建议?
查看完整描述

1 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

尝试使用 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];

    }

  }

}


查看完整回答
反对 回复 2021-11-18
  • 1 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信