microsoft / microsoft/TypeScript
Object is possibly undefined after undefined check on readonly property
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
TypeScript Version: 3.7.4, 3.9.2
Search Terms:
Object is possibly undefined
undefined readonly callback
Code
class Test {
private readonly testProperty?: { value: number };
public constructor(testProperty: { value: number }) {
this.testProperty = testProperty;
}
public method() {
if (this.testProperty) {
Promise.resolve().then(() => this.testProperty.value); //Object is possibly undefined
}
}
}
Expected behavior:
testProperty should not be resolved as possibly undefined as this is not possible in this scenario as the property has already been checked and it is marked as readonly.
Actual behavior:
testProperty is possibly undefined, requiring another undefined check.
Related Issues:
Similar issues but these i understand why TypeScript would report an error, in my case the property is readonly so it seems like a bug to me.
https://github.com/microsoft/TypeScript/issues/38053
https://github.com/microsoft/TypeScript/issues/11498
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 der verknüpften Playground-Reproduktion und vergleiche das in den verwandten Issues #38053 und #11498 beschriebene Verhalten. Verfolge die Typprüfung für die readonly optional property innerhalb des Promise-Callbacks; abgeschlossen ist die Arbeit, wenn das bereitgestellte Beispiel nicht mehr „possibly undefined“ meldet oder das erwartete Verhalten anderweitig behoben ist.
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
- 35/100