-
Notifications
You must be signed in to change notification settings - Fork 13.2k
Open
Labels
Awaiting More FeedbackThis means we'd like to hear from more people who would be helped by this featureThis means we'd like to hear from more people who would be helped by this featureDomain: JSDocRelates to JSDoc parsing and type generationRelates to JSDoc parsing and type generationDomain: JavaScriptThe issue relates to JavaScript specificallyThe issue relates to JavaScript specificallySuggestionAn idea for TypeScriptAn idea for TypeScript
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
Metadata
Metadata
Assignees
Labels
Awaiting More FeedbackThis means we'd like to hear from more people who would be helped by this featureThis means we'd like to hear from more people who would be helped by this featureDomain: JSDocRelates to JSDoc parsing and type generationRelates to JSDoc parsing and type generationDomain: JavaScriptThe issue relates to JavaScript specificallyThe issue relates to JavaScript specificallySuggestionAn idea for TypeScriptAn idea for TypeScript