Ich habe eine Funktion höherer Ordnung, die eine Funktion mit einer Online-Prüfung umschließt, für die ich versuche, eine Typ-Signatur zu schreiben, aber ich kann es nicht herausfinden. Dies ist, was ich bisher habe:Wie kann ich eingeben, dass eine Funktion eine Funktion als Argument übernimmt?
const preventOffline = <T extends Function>(fn: T): T =>
function() { // Error: Type '() => any' is not assignable to type 'T'.
if (!window.navigator.onLine) {
alert("Sorry, please retry when you're online.");
return undefined;
}
return fn.apply(this, arguments);
};
Ich habe auch versucht, das, was aus irgendeinem Grund gibt mir eine Fehlermeldung, T
deklariert, aber nie verwendet.
export const preventOfflineHOF = <T, U>(fn: (T) => U): ((T) => U | undefined) =>
Wie kann ich dies richtig annotieren?
Könnte ich wissen, warum meine Antwort abgelehnt wurde? – rainerhahnekamp
Wahrscheinlich, weil die Typ-Signatur nicht mit dem übereinstimmt, was die Funktion tut. 'T' ist nicht der Rückgabewert der übergebenen Funktion, sondern der Typ der übergebenen Funktion. – ahstro
Außerdem scheint Ihr Code genau den gleichen Fehler zu erzeugen:" Type '() => any' ist dem Typ nicht zuweisbar 'T' ". Haben Sie Ihren Code überprüft, bevor Sie ihn als Antwort gepostet haben? –