reactjs 如何推断自定义useFetch钩子的数据类型?

eh57zj3b  于 2023-02-15  发布在  React
关注(0)|答案(1)|浏览(142)

我正在尝试创建一个useFetch钩子,问题是任何对象/数组都可以作为数据出现,有没有可能以某种方式键入它,而不指定任何对象/数组?

    • 示例**
function useRequest(url: string, method: Method, data: any) {
  const [response, setResponse] = useState<any>(undefined)
  const [isLoading, setIsLoading] = useState<boolean>(false)
  const [error, setError] = useState<AxiosError | undefined>(undefined)

  const requestNow = async () => {
    setIsLoading(true)
    try {
      const response = await apiClient.post(url, data)
      .....
f45qwnt8

f45qwnt81#

如果您想确保只要data具有某些属性,就不关心它的实际类型,那么可以在TS中使用extends关键字。
请看这个例子:

type WithName = { name: string };

function useRequest<T extends WithName>(url: string, method: Method, data: T) {
  // Rest of the code
}

看看这个Playground的例子。

相关问题