microsoft / microsoft/TypeScript
Argument of type 'this' is not assignable to parameter of type 'NonNullable'?
Nessuno ha ancora preso questa issue.
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.3k
- Merge medio
- 2g 4h
- PR unite (30g)
- 132
Descrizione
TypeScript Version: 4.0.3
Search Terms: 'this' is not assignable to 'NonNullable'
Code
abstract class TreeNode {
parent: this | null = null; // polymorph this
left: this | null = null;
right: this | null = null;
replaceChild(child: this, replacement: this | null = null) { // this - polymorph type
this.left = child;
this.right = replacement;
}
removeNode() {
this.parent?.replaceChild(this, null); // ERROR
}
removeNode2Way() {
if (this.parent) {
this.parent.replaceChild(this, null); // OK
}
}
}
Expected behavior:
Conditional call without errors.
Actual behavior:
Error: Argument of type 'this' is not assignable to parameter of type 'NonNullable'
Playground Link: Playground
Related Issues:
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia con la riproduzione nel playground di TypeScript 4.0.3 e confronta la chiamata condizionale in removeNode con la chiamata protetta in removeNode2Way. Traccia il percorso del type-checking per polymorphic this e le chiamate opzionali; il lavoro è completo quando la chiamata condizionale viene accettata senza regressioni nella forma protetta.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- typescript
- Ambito
- compilers
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100