Open
Description
π Search Terms
ecmascript module import jsdoc
β Viability Checklist
- This wouldn't be a breaking change in existing TypeScript/JavaScript code
- This wouldn't change the runtime behavior of existing JavaScript code
- This could be implemented without emitting different JS based on the types of the expressions
- This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, new syntax sugar for JS, etc.)
- This isn't a request to add a new utility type: https://github.com/microsoft/TypeScript/wiki/No-New-Utility-Types
- This feature would agree with the rest of our Design Goals: https://github.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals
β Suggestion
Right now I can type an require
call with
/**
* @type {typeof import("./accounts").userAccount}
*/
var x = require("./accounts").userAccount;
from https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html#import-types
But when I my code uses an import statement
import { shortNameFromImport } from "textmodule";
I did not found a way to type that when the module resolution does found a hit.
@type
in the line before can not be used because there is no let
or const
in this line.
/** @type {import('textmodule')} */
import { shortNameFromImport } from "textmodule";
And the normal way to type a variable with parenthesis can not be used because it is not valid JS code:
import { /** @type {import('textmodule')} */ (shortNameFromImport ) } from "textmodule";
Both variants without parenthesis do not work...
import { /** @type {import('textmodule')} */ shortNameFromImport } from "textmodule";
import { shortNameFromImport /** @type {import('textmodule')} */ } from "textmodule";
π Motivating Example
With typescript code I can do some magic with path
in the tsconfig.json
"paths": {
"textmodule": [ "./textmodule.ts" ]
},
But I wanted to have a JSDoc only solution.
π» Use Cases
See above