microsoft / microsoft/TypeScript
Preserve comments with object destructuring assignment
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 132
Description
Search Terms
object destructuring assignment, comment
Suggestion
interface MyInterface {
/**
* I am x
*/
x : number;
/**
* I am y
*/
y : number;
}
declare const myInterface : MyInterface;
const {x, y} = myInterface;
/**
* Expected tooltip to have comment,
* > I am x
*
* Actual: No comment
*/
x;
/**
* Expected tooltip to have comment,
* > I am y
*
* Actual: No comment
*/
y;
/**
* Expected tooltip to have comment,
* > I am x
*
* Actual:
* Tooltip has comment,
* > I am x
*/
myInterface.x;
/**
* Expected tooltip to have comment,
* > I am y
*
* Actual:
* Tooltip has comment,
* > I am y
*/
myInterface.y;
/**
* I am z
*/
const z = 1;
/**
* Expected tooltip to have comment,
* > I am z
*
* Actual:
* Tooltip has comment,
* > I am z
*/
z;
Use Cases
I came across this idea after writing code like this,
function foo (
{
somePropertyA,
somePropertyB,
somePropertyC,
} : SomeObject
) {
/* Use these properties */
}
And I was hazy on the details of what each property was for.
So, I hovered my cursor over the variables somePropertyA, somePropertyB, somePropertyC and noticed there were no comments.
I had to go to the declaration of somePropertyA, somePropertyB, somePropertyC and look at each property individually.
At the moment, the way to get comments is to just do,
function foo (
o : SomeObject
) {
/* Use these properties */
}
Then the tooltip for o.somePropertyA, o.somePropertyB, o.somePropertyC will have comments
Examples
See above suggestion
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
Reproduce the behavior in the linked TypeScript Playground, comparing hover tooltips for properties accessed directly and variables introduced through object destructuring. Trace the language-service/type-checking path that resolves comments for destructured bindings; done means the declared property comments appear for x, y, and destructured function parameters without changing runtime output.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100