我有一個更高級的函數,用一個在線檢查來封裝一個函數,我正在嘗試寫一個類型簽名,但我無法弄清楚。這是我到目前爲止有:如何鍵入一個函數將任何函數作爲參數?
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);
};
我也試過這樣,由於某種原因給了我一個錯誤說T
聲明,但從未使用過。
export const preventOfflineHOF = <T, U>(fn: (T) => U): ((T) => U | undefined) =>
我該如何對此進行正確的註釋?
我可能知道爲什麼我的答案被降低了嗎? – rainerhahnekamp
可能是因爲類型簽名與功能不匹配。 'T'不是傳入的函數的返回值,而是傳入的函數的類型。 – ahstro
另外,好像你的代碼產生了相同的確切錯誤:「Type'()=> any'不能分配給類型'T'」。你在發佈它作爲答案之前是否還檢查過你的代碼? –