Ich würde gerne einen Konstruktor einer generischen Klasse definieren, die einen Callback nimmt, der eine Sammlung von einem der generischen Typen benötigt. Obwohl ich den Callback-Typ ohne eine Auflistung erfolgreich definieren kann, erhalte ich einen Fehler mit der Auflistung. Der Fehler ist "TS2371: Ein Parameterinitialisierer ist nur in einer Funktions- oder Konstruktorimplementierung zulässig".Typescript generischer Callback Typ Hinweis mit generischer Sammlung
Das gibt mir den Fehler, aber es ist die Typdefinition ich will:
import {List} from "immutable";
export class BackendToUI<BM, UM> {
constructor(private backendToUI: (BM, List<UM>) => UM) {}
}
Dies funktioniert, aber ist nicht der Typ, ich will:
export class BackendToUI<BM, UM> {
constructor(private backendToUI: (BM, UM) => UM) {}
}
ich das gleiche Problem bekommen mit UM[]
und Array<UM>
, so ist das Problem nicht auf ein Implementierungsproblem in der unveränderlichen Listentypdefinition zurückzuführen.
Definition der Art im Voraus auch nicht hilft, obwohl ich es nicht erwartet hatte:
import {List} from "immutable";
type backendToUIType<BM, UM> = (BM, List<UM>) => UM;
export class BackendToUI<BM, UM> {
constructor(private backendToUI: backendToUIType<BM, UM>) {}
}
Wer weiß, wie diese Callback-Typ zu deklarieren?
Danke, dumme Fehler meinerseits. Das funktioniert. – Malina
Aus Gründen der Neugier, warum Typescript kompiliert die Definition ohne die Parameternamen und Sammlung? Warum kompiliert das speziell: 'Konstruktor (private backendToUI: (BM, UM) => UM) {}'? – Malina
... beantworte ich meine eigene Frage ... das liegt daran, dass BM und UM als Parameternamen anstelle von Typen interpretiert werden. Oh! – Malina