Проблема
Я использую код Visual Studio и IntelliSense с комментариями JsDoc.У меня есть два модуля с объявлениями классов:
/**
* This is Foo class
*/
export default class Foo {
constructor() {}
}
и
/**
* This is Bar class
*/
export default class Bar {
constructor() {}
/**
* Init Bar from Foo
* @param {Foo} foo instance of Foo
* @returns {Bar}
*/
static initFromFoo(foo) {
return new Bar();
}
}
Класс Bar
используют Foo
в качестве параметра для метода initFromFoo
, но IntelliSense не понимает, что@param Foo
относится к class Foo
и не работает должным образом и говорит, что foo:any
,
https://imgbbb.com/images/2019/09/24/image517c0ec9d1027ac9.png
Как я могу заставить IntelliSense работать хорошо?
То, что я пробовал
- Импорт
./foo
в ./bar
- это делает IntelliSense хорошо работающим, но мне не нужен этот импорт, мне нужна просто ссылка на определение типа. - Добавить ссылку на другой файл, как в TypeScript
/// <reference path="./foo">
- без эффектов - Создать
jsconfig.json
файл со следующим содержимым:
{
"compilerOptions": {
"target": "es6",
"allowSyntheticDefaultImports": true,
"checkJs": true
},
"exclude": [
"node_modules"
]
}
нетэффекты тоже.Это просто выдвигает на первый план ошибку Cannot find name 'Foo'.ts(2304)
PS Это похоже на ограничение IntelliSense, связанное с модулями ES6.Потому что, если я удаляю export/import
из обоих файлов, IntelliSense будет работать как положено
https://i.ibb.co/CPL1gJC/image.png
https://i.ibb.co/xmXqzSk/image.png
PSS Извините за ссылки на изображениямой репо слишком низок для публикации изображений.