我試圖弄清楚如何重構函式的型別。通過閱讀檔案,在下面的示例中,我似乎找不到太多關于向非功能組件添加型別的資訊。
請注意,您會看到這段代碼重復了兩次url: string, options?: any,這讓我相信它可以更好地重構。
該getData(化名)函式宣告是這樣的型別:(url: string, options?: any) => Promise<void>;
而getAllData函式宣告的型別是這樣的:(url: string, options?: any): Promise<void>
有誰知道如何更好地重構這些型別?我的自定義反應鉤子的完整代碼如下以獲得更多背景關系:
interface GetDataArgs {
url: string;
options?: any;
}
export const useFetch = (): {
data: any;
getData: (url: string, options?: any) => Promise<void>;
fetchError: boolean;
setData: Dispatch<any>;
} => {
const [data, setData] = useState<any>(null);
const [fetchError, setFetchError] = useState<boolean>(false);
const getAllData = async (url: string, options?: any): Promise<void> => {
try {
// loading?
const res = await fetch(url, options);
const data = await res.json();
setData(data);
} catch (e) {
setFetchError(true);
console.error(e);
}
};
return { data, getData: getAllData, fetchError, setData };
};
如果您看到任何其他改進,請隨時提出任何建議。謝謝
uj5u.com熱心網友回復:
你創建一個函式型別運算式,如下所示:
type GetDataArgs = (url: string, options?: any) => Promise<void>
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/361527.html
標籤:javascript 反应 打字稿
上一篇:我的程式不斷輸出“未定義”。我正在嘗試創建一個函式,該函式使用一個呼叫函式的按鈕來更改我網頁上的文本
下一篇:JQuery搜索不顯示結果
