У меня есть этот класс:
class Cat {
name = 'Mr. Kitten';
/**
* A list of names
*/
namesList = ['Bob', 'Snow'];
changeName() {
this.name = this.getNameFromList();
}
getNameFromList() {
return this.namesList[0];
}
}
В этом примере VsCode предлагает вещи из контекста 'this' просто отлично внутри метода getNameFromList()
. Если я наведу указатель мыши на переменную 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.namesList
внутри getNameFromList
, потому что this
сейчасотносится к другому контексту, и VsCode не может знать, что я буду связывать this
каждый раз, когда вызываю эту функцию. Поскольку я всегда буду вызывать эту функцию с помощью .bind(this)
, то я бы хотел, чтобы VsCode показывал предложения из этого контекста.
Есть ли способ сообщить VsCode, что this
внутри этой одной функции всегда будетпривязан к другому контексту, чтобы я мог заставить автозаполнение и предложения снова работать внутри getNameFromList
?