microsoft / microsoft/TypeScript
Quick fix to convert @typedef to type or interface
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 132
Description
Search Terms
typedef quickfixtypedef jsdoc
Suggestion
I have lots of code in an old Closure Compiler-style project that looks like this:
/**
* @typedef {{
* px: number,
* py: number,
* isZooming: boolean,
* isPanning: boolean,
* is2DPan: boolean,
* cancelNextDblclick: boolean,
* initializeMouseDown: (e: !Event, dygraph:!DygraphAny, context: !DygraphInteractionContext) => void
* }} DygraphInteractionContext
*/
If I declare a variable with this type, I can see that TypeScript understands the @typedef:
type DygraphInteractionContext = {
px: number;
py: number;
isZooming: boolean;
isPanning: boolean;
is2DPan: boolean;
cancelNextDblclick: boolean;
initializeMouseDown: (e: Event, dygraph: any, context: ...) => void;
}
I'd like to convert this to a type or interface. I can introduce a dummy variable, copy the TS-style type declaration and paste it in to do the conversion.
But it'd be easier if there were a quickfix!
Use Cases
Migrating a project that used JSDoc-based typing. A workaround is available, but a quickfix would be a big improvement.
Examples
(see above)
Checklist
My suggestion meets these guidelines:
- 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, etc.)
- This feature would agree with the rest of TypeScript's Design Goals.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue provides no repository files, tests, or entry points. Start by reviewing the TypeScript quick-fix architecture and existing JSDoc-related codefixes, then determine the expected conversion for the shown @typedef example. Done means a quickfix converts supported JSDoc typedefs to a type or interface without changing runtime output.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, typescript
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100