1

Best explained with an example:

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();

This code leads to errors in VSCodes TypeScript checker and won't provide code completion for the class inside foo:

enter image description here

An alternative would be to export the class constructor and import it in index.js which gives me full code completion but adds a warning due to the unused import of the class:

enter image description here

What I also don't like about this solution is that it "leaks" the class to the outside which is not necessary otherwise due to the createSomeClass factory.

Is there some way to have full annotations & code completion without the unused import of the class?

suamikim
  • 5,350
  • 9
  • 40
  • 75

0 Answers0