microsoft / microsoft/TypeScript

Allow return type annotations on setters

Offen
#61,561 5 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Awaiting More Feedback Suggestion
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

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Ö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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.