ich immer folgende Fehler bekommen:Typoskript ungültig Überlastung Signaturen - unvereinbar mit der Umsetzung
error TS2394: Overload signature is not compatible with function implementation.
für folgenden Code:
import Registry = require('../class/Registry');
type Format = Function;
type FormatRegistry = {
[s: string]: Format;
}
var registry = new Registry<Format>();
function formatAPI(): FormatRegistry; // get all formats // HERE GOES THE COMPILER ERROR
function formatAPI(name: string): Format; // get format
function formatAPI(name: string, format: Format): void; // register format
function formatAPI(formatMap: FormatRegistry): void; // register many formats
function formatAPI(nameOrMap?: string|FormatRegistry, callback?: Format): FormatRegistry|Format|void {
if (typeof nameOrMap === 'object') {
registry.registerMany(nameOrMap);
} else if (typeof nameOrMap === 'string') {
if (callback) {
registry.register(nameOrMap, callback);
} else {
return registry.get(nameOrMap);
}
} else {
return registry.list();
}
}
export = formatAPI;
Ich kann nicht sehen, was in dem Funktionstyp falsch ist Überlastung oben. Ich habe versucht, Funktionssignaturen (und entsprechende Typen) Stück für Stück zu entfernen, aber ich habe versagt - ich habe eine leere Funktion erreicht.
Die Logik hinter dem Code ist in Ordnung (alle Tests bestehen), nur die Überladungen sind irgendwie ungültig.
Diese Frage bezieht sich auf this one.
@CoreyAlix so, wie soll ich das Problem beheben? – ducin