Задать вопрос
@JeanPaulBelmondo

Как определить причину ошибка Type instantiation is excessively deep and possibly infinite?

Вводные данные такие:
У меня MacBook Pro M1, NodeJS 22.x, установлено через NVM, typescript 5.8.x

Есть код:
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
import type { InferOutput } from 'valibot';
import { object, string } from 'valibot';

export const SomeItemSchema = object({
    name: string(),
    url: string(),
});

type SomeItem = InferOutput<typeof SomeItemSchema>

const rootApi = createApi({
    baseQuery: fetchBaseQuery({ baseUrl: 'https://pokeapi.co/api/v2/' }),
    endpoints: () => ({}),
});

const apiWithTag = rootApi.enhanceEndpoints({ addTagTypes: ['pokemons'] });

export const pokemonApi = apiWithTag.injectEndpoints({
    endpoints: (builder) => ({
        getSomeItems: builder.query<SomeItem[], void>({
            query: () => ({
                url: 'item',
            }),
            providesTags: ['pokemons'],
        }),
    }),
});

export const { useGetSomeItemsQuery } = pokemonApi;


import { useGetSomeItemsQuery } from './api';

export function useSomeItems() {
    const { isLoading, isFetching, data } = useGetSomeItemsQuery();

    return {
        isLoading,
        isFetching,
        data,
    };
}


Проблема следующая, в данном месте
const { isLoading, isFetching, data } = useGetSomeItemsQuery();


я получаю ошибку

Type instantiation is excessively deep and possibly infinite.ts(2589)


Эта ошибка есть только на моём маке (других маков у меня нет, проверить не могу), на домашем ПК c Windows - всё ок, на ноуте с Linux - всё oк.

Что я сделал:
1) полностью переустанавливал все зависимости npm со сбросом кэша;
2) использовал разные версии typescript;
3) переустанавливал nodejs / npm;

Результата 0. Куда можно копать дальше?
  • Вопрос задан
  • 48 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@karminski
Senior React.JS Developer
А использование valibot оправдано? Как мне кажется под беглым взглядом, здесь проще описать структуру данных без вот это всего, просто
export interface SomeItem {
    name: string,
    url: string,
};
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы