ich diese Java Konstruktorüberladungen übersetzen müssen Typoskript:Typoskript: Konstruktor Überlastung
public QueryMixin() {
this(null, new DefaultQueryMetadata(), true);
}
public QueryMixin(QueryMetadata metadata) {
this(null, metadata, true);
}
public QueryMixin(QueryMetadata metadata, boolean expandAnyPaths) {
this(null, metadata, expandAnyPaths);
}
public QueryMixin(T self) {
this(self, new DefaultQueryMetadata(), true);
}
public QueryMixin(T self, QueryMetadata metadata) {
this(self, metadata, true);
}
public QueryMixin(T self, QueryMetadata metadata, boolean expandAnyPaths) {//...}
Ich habe versucht, diese Konstrukteure schaffen einen Blick dort nehmen, aber ich habe nicht in der Lage, herauszufinden, wie zu erhalten Sie es ...
Irgendwelche Ideen?
constructor(); <<<1>>>
constructor(metadata: QueryMetadata);
constructor(metadata: QueryMetadata, expandAnyPaths: boolean);
constructor(self: T);
constructor(self: T, metadata: QueryMetadata);
constructor(selfOrMetadata: T | QueryMetadata, expandAnyPaths: boolean) {
this.self = selfOrMetadata; <<< PROBLEM HERE
this.metadata = selfOrMetadata; <<< PROBLEM HERE
this.expandAnyPaths = expandAnyPaths;
}
Auf <<<1>>>
Ich erhalte diese Compilation Nachricht:
Überlastsignatur mit Funktionsimplementierung nicht kompatibel ist.
Nach einer Liste von Überladungen müssen Sie die tatsächliche Implementierungssignatur angeben, die (grob gesagt) eine Schnittmenge aller Überladungen sein muss, die ihr vorausgehen. Also in diesem Fall müssen Sie am Ende hinzufügen: 'Konstruktor (SelfOrMetaData ?: T | QueryMetadata ...)' und so weiter. Alternativ können Sie einfach den Vorwurf ablehnen, irgendeine Art von Sicherheit an diesem Punkt zu haben und einfach 'constructor (,,, args: any [])'. –
Ich habe letzte Java-ähnliche Konstruktor-Implementierung hinzugefügt. Ich finde nicht recht heraus, wie man erkennen kann, ob "selfOrMetadata" zu "self" oder "metadata" zuweisbar ist. – Jordi
Sie müssen beide Argumente optional machen ('selfOrMetaData?'), Da es mindestens eine Überladung gibt, bei der keines der Argumente angegeben wird. Ihr zweites Argument muss in ähnlicher Weise eine Vereinigung aller möglichen Argumenttypen in der zweiten Position sein. 'expandAnyPathsOrMetadata ?: boolean | QueryMetadata'. –