microsoft / microsoft/TypeScript
Support Closure Compiler-style @typedef
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 132
Description
Search Terms
- Closure Compiler typedef
Suggestion
With Closure Compiler-style JSDoc, you name an @typedef type definition by introducing a var in the next statement:
/** @typedef {(string|number)} */
var NumberLike;
TypeScript doesn't recognize this construct. Instead, it wants you to write:
/** @typedef {(string|number)} NumberLike */
Use Cases
Migrating code written for use with Google's Closure Compiler over to TypeScript.
Examples
See above. My proposal is that, when prefixed with an @typedef with only a type (and no name), a variable definition would create a symbol in the type namespace in addition to the value namespace.
Checklist
My suggestion meets these guidelines:
- This wouldn't be a breaking change in existing TypeScript/JavaScript code
→ If the variable has the same name as an existing type, this would create a break. But this would indicate an issue if the two types disagreed. - 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
No implementation files, tests, or entry points are named. Start by tracing how TypeScript handles Closure-style JSDoc @typedef declarations, then compare the existing named form with the proposed variable-based form; done means the example creates the requested type symbol without changing emitted JavaScript.
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
- Clearly specified
- Newbie friendliness
- 35/100