microsoft / microsoft/TypeScript
Type with overloaded method with a generic overload matches type with incompatible method
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.9.0-dev.20200305
Search Terms:
generic type overload
Code
interface I1 {
f<V extends 'a'>(value: V): void;
f(value: 'b'): void;
}
interface I2 {
f(value: 'c'): void;
}
function test(x: I1) {
function u(y: I2) { }
u(x);
}
Expected behavior:
Compilation error, u cannot accept x as I1 cannot handle f('c')
Actual behavior:
Compilation succeeds.
Note that all of the following fail, as expected:
interface I1 {
// f<V extends 'a'>(value: V): void;
f(value: 'b'): void;
}
interface I2 {
f(value: 'c'): void;
}
function test(x: I1) {
function u(y: I2) { }
u(x);
}
interface I1 {
f<V extends 'a'>(value: V): void;
// f(value: 'b'): void;
}
interface I2 {
f(value: 'c'): void;
}
function test(x: I1) {
function u(y: I2) { }
u(x);
}
interface I1 {
f(value: 'a'): void;
f(value: 'b'): void;
}
interface I2 {
f(value: 'c'): void;
}
function test(x: I1) {
function u(y: I2) { }
u(x);
}
Related Issues:
Not sure.
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 dem Compiler TypeScript 3.9.0-dev.20200305 und den minimalen Interfaces und dem im Issue genannten Aufruf und verwende das verlinkte Playground-Beispiel, um die erfolgreiche Zuweisung zu reproduzieren. Bestätige, dass die Kombination aus generischer und nicht generischer Überladung I1 fälschlicherweise als I2 akzeptiert, füge anschließend einen Regressionstest hinzu und überprüfe, dass der Aufruf den erwarteten Kompilierungsfehler erzeugt.
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