Kann jemand erklären, warum dieser Code nicht funktioniert:Argument des Typs 'Barable' ist nicht zuordenbare Parameter vom Typ 'T'
class Fooable {
foo: string;
}
class Barable extends Fooable {
bar: boolean;
}
function simplifiedExample<T extends Fooable>(): Array<T> {
let list = new Array<T>();
list.push(new Barable());
return list;
}
Barable erweitert Fooable. Warum kann ich kein Array zu einem Array hinzufügen, wenn T ein Muss sein muss? Hier Code in playground
EDIT:
das Problem ist, simplifiedExample() ist eine Überschreibung von einer Basisklasse, die Basisklasse nur eine Definition. Da ist ein gemischtes Projekt JS/TS.
sehen: new playground
ich eine Lösung mit einer Besetzung gefunden, aber es scheint nicht wie eine richtige Lösung für mich:
class BarableService extends FooableService {
simplifiedExample<T extends Fooable>(): Array<T> {
let list = new Array<Fooable>();
list.push(new Barable());
return list as Array<T>;
}
}
das funktioniert nicht. [Beispiel] (https://www.typescriptlang.org/play/index.html#src=class%20Fooable%20%7B%0A%20%20%20%20foo%3A%20string%3B%0A%7D% 0% 20% 20%% 20% 20% 20% 20%% 20% 20% 20% 20%% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 3A% 20Array% 3CT% 3E% 20% 7B% 0A% 20% 20% 20% 20% 20Liste% 20% 3D% 20new% 20Array% 3CFoable% 3E()% 3B% 0A% 20% 20% 20% 20% 20% 20% 20% 20list.push (neu% 20Barable())% 3B% 0A% 20% 20% 20% 20return% 20list% 3B% 0A% 7D) – razgoolyy
Sie sollten den Rückgabetyp auch in das Array 'Fooable ändern 'wie in der Antwort geschrieben. – NiVeR
Ich kann die Signatur der Methode nicht ändern. Bitte sehen Sie das Update meines Beitrags – razgoolyy