microsoft / microsoft/TypeScript

No error when accessing setter-only properties

Offen
#58,112 2 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

In Discussion Suggestion
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.3k
Ø Merge
1 T. 19 Std.
Gemergte PRs (30 T.)
117

Beschreibung

🔎 Search Terms

"setter only", "setter-only"

🕗 Version & Regression Information
  • This behavior is present in the current version of TypeScript, 5.4.4
⏯ Playground Link

https://www.typescriptlang.org/play?#code/MYGwhgzhAEBiD29oG8BQ0PQgUwC7QCMwAnACiIC8AuLXYgSwDsBzAShWgF9VvVh5GEfADNE0ALzRG2AO5xEpVgG4+AodABuYEAFdsNIQxYToo+ADoixJdAD0t6ABUAFvRiQI9ZowC22RvgQzvA6IAAmUvD4BNjQ2iDwMthhADSmiJYk0DL0ICBxIDJgAJ4wMdA6jGHYwkzJAIRAA

💻 Code
class Foo {
    set bar(baz: string) { }
}

const foo = new Foo();
const value: string = foo.bar; // This assignment should not be allowed, foo.bar will always be undefined!
🙁 Actual behavior

There is no error reported during type-checking.

🙂 Expected behavior

The type-checking should report an error for the assignment in the last line as foo.bar will always be undefined.

Additional information about the issue

#21759 is related, but that issue proposes a whole new language feature, this issue is solely about the lack of a type error.

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 dem verlinkten TypeScript Playground und reproduziere die Zuweisung einer Property, die nur einen Setter besitzt, um das aktuelle Verhalten der Typprüfung zu bestätigen. Verfolge den am Lesen von foo.bar beteiligten Pfad im Type-Checker und füge Tests hinzu, die zeigen, dass das Zuweisen des Leseergebnisses zu string einen Fehler meldet, ohne das in #21759 besprochene separate Feature zu implementieren.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
typescript
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 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.