Лучше всего объяснить на примере:
some-class.js
function SomeClass() { /* ... */ }
SomeClass.prototype.doSomething = function() { /* ... */ };
export function createSomeClass() {
return new SomeClass();
}
index.js
import { createSomeClass } from './some-class';
/**
* @param {SomeClass} someClass
*/
function foo(someClass) {
someClass.doSomething();
}
var someClass = createSomeClass();
someClass.doSomething();
Этот код приводит к ошибкам в программе проверки VSCodes TypeScript и не обеспечивает завершение кода для класса внутри foo
:
![enter image description here](https://i.stack.imgur.com/prXhp.png)
Альтернативабыло бы экспортировать конструктор класса и импортировать его в index.js
, что дает мне полное завершение кода, но добавляет предупреждение из-за неиспользованного импорта класса:
![enter image description here](https://i.stack.imgur.com/s1iW1.png)
Что мне также не нравится в этом решении, так это то, что оно «пропускает» класс наружу, что не является необходимым в противном случае из-за фабрики createSomeClass
.
Есть ли какой-то способ получитьполные аннотации и завершение кода без неиспользуемого импорта класса?