I'm writing JavaScript (ES6) code in Visual Studio Code and enabled VSCode's type checking as explained in the VSCode docs.
When referring to a type that is defined in another file (Track
in the example below), I get an error like [js] Cannot find name 'Track' at the JSDoc reference to that type unless I import it. When I import this type, I get an error from ESLint: [eslint] 'Track' is defined but never used. (no-unused-vars)
I don't want to disable the ESLint rule. Is there a way to import the type only for the type checks in VSCode?
import Track from "./Track";
export default class TrackList {
/**
* Creates a new track list.
* @param {Iterable<Track>} tracks the tracks to include
*/
constructor(tracks) {
this._tracks = tracks ? Array.from(tracks) : [];
}
...
You can use import("%YOUR_LIB%").%TYPE%
:
export default class TrackList {
/**
* Creates a new track list.
* @param {Iterable<import("./Track").Track>} tracks the tracks to include
*/
constructor(tracks) {
this._tracks = tracks ? Array.from(tracks) : [];
}
...
Since Track
is exported as default, you could also use:
/** @param {Iterable<import("./Track").default>}
Or as Tiago pointed out:
/** @typedef { import('./Track').default } Track */
/**
* Creates a new track list.
* @param {Iterable<Track>} tracks the tracks to include
*/
...