Reactjs 接收接口作为参数

Reactjs 接收接口作为参数,reactjs,typescript,Reactjs,Typescript,我正在学习Typescript,并正在创建一个自定义的React钩子来从api获取数据: import { useState, useEffect } from 'react'; import api from '../services/api'; interface RequestProps { url: string; initialLoading: boolean; } interface ResponseProps<T> { data: T,

我正在学习Typescript,并正在创建一个自定义的React钩子来从api获取数据:

import { useState, useEffect } from 'react';
import api from '../services/api';

interface RequestProps {
    url: string;
    initialLoading: boolean;
}

interface ResponseProps<T> {
    data: T,
    error: boolean,
    loading: boolean
}

export const useApiRequest = <T>({ url, initialLoading }: RequestProps): ResponseProps<T> => {
  // Response state
  const [data, setData] = useState<T>();
  const [error, setError] = useState(false);
  const [loading, setLoading] = useState(initialLoading);

  useEffect(() => {
    const fetchApi = async () => {
      try {
        setLoading(true);

        // Fetch data from REST API
        const response = await api.get<T>(url);
        setLoading(false);
        setData(response.data);
      } catch (e) {
        setError(true);
      }
    };

    // Call async function
    fetchApi();
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, [url]);

  return {
    data,
    loading,
    error,
  };
};

问题是Typescript在返回语句的
数据中给了我一个错误:

TS2322:类型“T |未定义”不可分配给类型“T”。“T”可以用与“T | undefined”无关的任意类型实例化。类型“未定义”不可分配给类型“T”。“T”可以用与“undefined”无关的任意类型实例化。ts(10,5):预期的类型来自属性“data”,该属性在类型“ResponseProps”上声明

我错过了什么


提前谢谢

错误说明了一切,
数据
可以在
响应之前未定义。数据
用于更新状态(
数据

因此,尝试如下更改响应类型:

interface ResponseProps<T> {
    data: T | undefined,
    error: boolean,
    loading: boolean
}
接口响应操作{
数据:T |未定义,
错误:布尔,
加载:布尔值
}

哇,我真傻!感谢您对此进行故障排除
interface ResponseProps<T> {
    data: T | undefined,
    error: boolean,
    loading: boolean
}