The code you are showing is "using plain JSDoc" vs "using JSDoc to reference TS types" for static type checking/linting.
In the latter the types are defined in .d.ts files — i.e. the declarations exist in "type space" while JSDoc style annotations are used to reference the TS types in "value space" (the JavaScript files).
The code you are showing is "using plain JSDoc" vs "using JSDoc to reference TS types" for static type checking/linting.
In the latter the types are defined in .d.ts files — i.e. the declarations exist in "type space" while JSDoc style annotations are used to reference the TS types in "value space" (the JavaScript files).
Example (Discriminate Union with Exhaustiveness checking):
Note how:
import('./tutorial').VideoTutorial