microsoft / microsoft/TypeScript
Please Allow return `void` of `set accessor`
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.4k
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 117
Description
🔍 Search Terms
set accessor , return, void
✅ 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
For the following case, TypeScript 5.5.3 throws "A 'set' accessor cannot have a return type annotation."
interface Foo {
set foo (value: number): void
}
the 'void' is a special type , 'set' accessor should be allowed to return it.
Because I think in TS "Every function should/could have a return value , if it don't, please return void ."
📃 Motivating Example
I think , in a ts project , there should be a Uniform code specification, like this :
"All functions have return type , or All functions don't have return type, no exception" .
💻 Use Cases
make my project under a Uniform code specification.
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 names no source file, test, or compiler entry point. Start by reproducing the TypeScript 5.5.3 diagnostic with the interface example and trace how setter return type annotations are checked. Done means a void annotation is accepted without changing emitted JavaScript or existing runtime behavior.
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
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100