Урок 3.19. Loading, Error Handling, Global Error в Next.js
Очень важно чтобы сообщения об ошибках отражали реальную проблему, а не то что может показаться проблемой. Запускаю тесты, получаю ошибку: Error: Failed to parse source for import analysis because the content contains invalid JS syntax. If you are using JSX, make sure to name the file with the .jsx or .tsx extension. ❯ formatError node_modules/.pnpm/vite@4.5.3_@types+node@20.16.1_less@4.2.0/node_modules/vite/dist/node/chunks/dep-41cf5ffd.js:44062:46 ❯ TransformContext.error node_modules/.pnpm/vite@4.5.3_@types+node@20.16.1_less@4.2.0/node_modules/vite/dist/node/chunks/dep-41cf5ffd.js:44058:19 ❯ TransformContext.transform node_modules/.pnpm/vite@4.5.3_@types+node@20.16.1_less@4.2.0/node_modules/vite/dist/node/chunks/dep-41cf5ffd.js:41784:22 ❯ Object.transform node_modules/.pnpm/vite@4.5.3_@types+node@20.16.1_less@4.2.0/node_modules/vite/dist/node/chunks/dep-41cf5ffd.js:44352:30 ❯ loadAndTransform node_modules/.pnpm/vite@4.5.3_@types+node@20.16.1_less@4.2.0/node_modules/vite/dist/node/chunks/dep-41cf5ffd.js:55026:29 В результате оказалось что ошибка была в том что в имплементации абстрактного класса с генериками были перепутаны параметры. В определении класса: class A implements B<C, D> В использовании класса: private readonly a: B<D,C> Кстати - похожая ситуация вот тут вот описана - github.com/...030 #vitest #typescript #ошибки #unit-tests #tests #integrated-tests
Глубокое клонирование объектов js. Почему не стоит использовать JSON.parse
Наверняка, многие из вас сталкивались с проблемой клонирования объектов. И скорей всего сталкивались с проблемой, когда спред ({ ...foo }) не работал на вложенные объекты (массивы). Хотя в интернете написано, что работает. Для тех, кто не знает расскажу.
Есть два типа клонирования - поверхностное и глубокое.
Поверхностное, если простым языком, замена ссылки вашей переменной на новую. Например: const foo = { a: 1, b: 2, c: { x: 2 } };
const oldFoo = foo;
const newFoo = { ...foo };
oldFoo.a = 2;
newFoo...