ArturMavlidov
@ArturMavlidov

В чём ошибка типизации typescript?

type Category = {
  id: number,
  name: string,
  products: number[]
}

type Items = {
  [key: string]: any[]
}

export interface IGoods {
  categories: Category[];
  items: Items;
}

const App: React.FC = () => {
  const [goods, setGoods] = useState<IGoods | object>({});

  useEffect(() => {
    fetch("https://delivery-f1999-default-rtdb.firebaseio.com/goods.json")
      .then((data) => data.json())
      .then((data) => setGoods(data))
  }, [])

  return (
    <>
      <Categories categories={goods.categories}/>
    </>
  );
};


Пытаюсь в компонент Categories передать категории, но ошибка - Property 'categories' does not exist on type 'object | IGoods'
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
Seasle
@Seasle Куратор тега React
Скорее лучше использовать useState<T | null>(null), т.к. в таком случае можно легко проверить значение в условном рендеринге. А если Вы объявите в вашем компоненте нечто вроде React.FC<{ data: T }>, то Object (точнее ничего, кроме T честным путём) не сможете внутрь прокинуть.

https://codesandbox.io/s/qna-q-1135320-6iz66s
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы