【发布时间】:2022-01-04 16:50:23
【问题描述】:
我有一个自定义反应挂钩来执行 API 调用:
const useFetch: (string) => Record<string, any> | null = (path: string) => {
const [data, setData] = useState<Record<string, any> | null>(null);
var requestOptions: RequestInit = {
method: "GET",
redirect: "follow",
};
const fetcher = async () => {
const res = await fetch(
process.env.REACT_APP_API_ENDPOINT + path,
requestOptions
);
const json = await res.json();
setData(json.data);
};
useEffect(() => {
fetcher();
}, [path]);
return data;
};
我的问题是我使用这个钩子来调用许多不同的端点,所以我无法在钩子中指定data 的类型。但是当我调用钩子时,我知道该特定端点的数据是什么,所以我想为存储返回值的变量指定一个类型,例如:
const data: { name: string } | null = useFetch('/example-end-point');
这是我想要实现的,但我得到这个错误:Property 'name' is missing in type 'Record<string, any>' but required in type '{ name: string; }'.
使用any 作为返回类型是可行的,但如果有任何其他方法可以实现这一点,我不想诉诸于此。
【问题讨论】:
标签: javascript reactjs typescript