我有这门课: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];
}
}
}
添加回答
举报
0/150
提交
取消