microsoft / microsoft/TypeScript
3.6 regression: unions of callable types involving `this` types
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: Version 3.6.3, Version 3.7.0-dev.20190911
Search Terms: intersect function
Code
class A {
public uniqueToA = "a";
public getString(this: A): string {
return "a";
}
}
class B {
public uniqueToB = "b";
public getString(this: B): string {
return "b";
}
}
function f(model: A | B): string {
return model.getString();
}
Expected behavior:
In Typescript 3.5.3, the model.getString() in function f has no error.
Actual behavior:
In Typescript 3.6.3 and 3.7.0-dev.20190911, the code above gets the following errors:
index.ts:18:12 - error TS2684: The 'this' context of type 'A | B' is not assignable to method's 'this' of type 'A & B'.
Type 'A' is not assignable to type 'A & B'.
Property 'uniqueToB' is missing in type 'A' but required in type 'B'.
18 return model.getString();
~~~~~
index.ts:10:12
10 public uniqueToB = "b";
~~~~~~~~~
'uniqueToB' is declared here.
Related Issues: #32506
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
Riproduci l’esempio index.ts con TypeScript 3.5.3, 3.6.3 e la versione 3.7.0-dev indicata per confermare la regressione. Traccia il percorso del controllo dei tipi per model.getString() e le unioni di tipi chiamabili con parametri this; il lavoro è completato quando l’esempio viene compilato senza l’errore TS2684, mantenendo al contempo i controlli pertinenti di this.
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