microsoft / microsoft/TypeScript
Allow return type annotations on setters
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 2 T. 4 Std.
- Gemergte PRs (30 T.)
- 132
Beschreibung
Setters can return values, so TypeScript should support declaring return types on setters.
### 🔎 Search Terms
setter return type
### 🕗 Version & Regression Information
This is the behavior in every version I tried, and I reviewed the FAQ for relevant entries
### ⏯ Playground Link
- Without return type: https://www.typescriptlang.org/play/?#code/MYewdgzgLgBAZiEMC8MDeAoGMIFNYBGAhgE4AUA+gJTpbYwn4CuJYMA5I1C2wG5EAbJrnYBuOgF8ME8aEiw8UKLhIQAwkTAAlZqwBqg4RBQwA8gQBWuYFAB0Ac3ymA7mAAKJEAAcVUAJ4AIrgQwCQAll5QIOQIIAA0HMQk7FS2imQ0yFkcXDww-EIisuAQIAK4tgIg9mQABorKqjDAmgAkaA0q6po63PqGwQD8HOwwAFwwAETsUJMSDLp8AxC1VKJAA
- With return type: https://www.typescriptlang.org/play/?#code/MYewdgzgLgBAZiEMC8MDeAoGMIFNYBGAhgE4AUA+gJQBcOUJAlmAObpbYwn4CuJYMAOTcofAQDciAGx65BAbg4BfDEsWhIsPFCi4SEAMJEwAJV78AatNkQUMAPIEAVrmBQAdC3z2A7mAAKJCAADnpQAJ4AIrgQwEzBUCDkCCAANELEJIJU7tpkVCjIqMLmEtZy6uAQIFK47lIgLGQABtq6+jDAxgAkaG16hsZmopblEAD8QoIwdABEglCzSlylMJIyMc1U8kA
### 💻 Code
```ts
const foo = {
set bar(_) {
return 'return value';
}
};
const settersCanReturnValues = Object.getOwnPropertyDescriptor(foo, 'bar').set() === 'return value';
console.log(`setters can${settersCanReturnValues? '' : "'t"} return values`);
```
Same code, with an explicit return type:
```ts
const foo = {
set bar(_): string {
return 'return value';
}
};
const settersCanReturnValues = Object.getOwnPropertyDescriptor(foo, 'bar').set() === 'return value';
console.log(`setters can${settersCanReturnValues? '' : "'t"} return values`);
```
### 🙁 Actual behavior
TypeScript compiler emits invalid JavaScript containing return type declaration syntax.
### 🙂 Expected behavior
TypeScript compiler supports and removes return type declarations from setters.
### Additional information about the issue
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit den beiden TypeScript Playground-Beispielen und vergleiche das ausgegebene JavaScript für Setter mit und ohne expliziten Rückgabetyp. Die Änderung ist abgeschlossen, wenn der annotierte Setter zu gültigem JavaScript kompiliert wird, wobei sein Rückgabetyp entfernt wird, während das vorhandene nicht annotierte Beispiel weiterhin funktioniert; füge einen Regressionstest in die bestehende Testsuite des Compilers hinzu.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100