en
Feedback
Node.JS [ru] | Серверный JavaScript

Node.JS [ru] | Серверный JavaScript

Open in Telegram

Node.js, backend и AI-разработка: статьи, новости, вайбкодинг, автоматизация и работа с ИИ-агентами. Личный блог автора - @just_genych По вопросам рекламы или разработки: @g_abashkin РКН: https://vk.cc/cJPGOP

Show more

📈 Analytical overview of Telegram channel Node.JS [ru] | Серверный JavaScript

Channel Node.JS [ru] | Серверный JavaScript (@we_use_js) in the Russian language segment is an active participant. Currently, the community unites 11 342 subscribers, ranking 10 990 in the Technologies & Applications category and 57 879 in the Russia region.

📊 Audience metrics and dynamics

Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 11 342 subscribers.

According to the latest data from 13 June, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by 76 over the last 30 days and by -7 over the last 24 hours, overall reach remains high.

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 11.23%. Within the first 24 hours after publication, content typically collects 6.50% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 1 274 views. Within the first day, a publication typically gains 737 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 4.
  • Thematic interests: Content is focused on key topics such as node.js, javascript, node, process.exit(1, модуль.

📝 Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
Node.js, backend и AI-разработка: статьи, новости, вайбкодинг, автоматизация и работа с ИИ-агентами. Личный блог автора - @just_genych По вопросам рекламы или разработки: @g_abashkin РКН: https://vk.cc/cJPGOP

Thanks to the high frequency of updates (latest data received on 14 June, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.

11 342
Subscribers
-724 hours
+547 days
+7630 days
Attracting Subscribers
June '26
June '26
+74
in 0 channels
May '26
+282
in 22 channels
Get PRO
April '26
+78
in 0 channels
Get PRO
March '26
+70
in 0 channels
Get PRO
February '26
+145
in 0 channels
Get PRO
January '26
+137
in 57 channels
Get PRO
December '25
+88
in 25 channels
Get PRO
November '25
+129
in 69 channels
Get PRO
October '25
+25
in 28 channels
Get PRO
September '25
+145
in 85 channels
Get PRO
August '25
+79
in 6 channels
Get PRO
July '25
+230
in 7 channels
Get PRO
June '25
+228
in 9 channels
Get PRO
May '25
+314
in 4 channels
Get PRO
April '25
+131
in 0 channels
Get PRO
March '25
+333
in 21 channels
Get PRO
February '25
+110
in 3 channels
Get PRO
January '25
+258
in 18 channels
Get PRO
December '24
+418
in 53 channels
Get PRO
November '24
+447
in 40 channels
Get PRO
October '24
+294
in 27 channels
Get PRO
September '24
+304
in 33 channels
Get PRO
August '24
+300
in 24 channels
Get PRO
July '24
+333
in 34 channels
Get PRO
June '24
+348
in 32 channels
Get PRO
May '24
+383
in 28 channels
Get PRO
April '24
+368
in 27 channels
Get PRO
March '24
+277
in 10 channels
Get PRO
February '24
+771
in 3 channels
Get PRO
January '24
+358
in 24 channels
Get PRO
December '23
+589
in 34 channels
Get PRO
November '23
+212
in 17 channels
Get PRO
October '23
+379
in 7 channels
Get PRO
September '23
+153
in 0 channels
Get PRO
August '23
+898
in 0 channels
Get PRO
July '23
+1 381
in 0 channels
Get PRO
June '23
+1 194
in 0 channels
Get PRO
May '23
+718
in 0 channels
Get PRO
April '23
+387
in 0 channels
Get PRO
March '23
+495
in 0 channels
Get PRO
February '23
+46
in 0 channels
Get PRO
January '23
+1 101
in 0 channels
Get PRO
December '22
+58
in 0 channels
Get PRO
November '22
+55
in 0 channels
Get PRO
October '22
+92
in 0 channels
Get PRO
September '22
+289
in 0 channels
Get PRO
August '22
+35
in 0 channels
Get PRO
July '22
+15
in 0 channels
Get PRO
June '22
+22
in 0 channels
Get PRO
May '22
+30
in 0 channels
Get PRO
April '22
+34
in 0 channels
Get PRO
March '22
+26
in 0 channels
Get PRO
February '22
+15
in 0 channels
Get PRO
January '22
+27
in 0 channels
Get PRO
December '21
+258
in 0 channels
Get PRO
November '21
+2 073
in 0 channels
Get PRO
October '21
+38
in 0 channels
Get PRO
September '21
+273
in 0 channels
Get PRO
August '21
+37
in 0 channels
Get PRO
July '21
+184
in 0 channels
Get PRO
June '21
+294
in 0 channels
Get PRO
May '21
+79
in 0 channels
Get PRO
April '21
+119
in 0 channels
Get PRO
March '21
+106
in 0 channels
Get PRO
February '21
+196
in 0 channels
Get PRO
January '21
+130
in 0 channels
Get PRO
December '20
+3 528
in 0 channels
Date
Subscriber Growth
Mentions
Channels
14 June0
13 June0
12 June+2
11 June+41
10 June+29
09 June0
08 June0
07 June0
06 June0
05 June0
04 June0
03 June0
02 June+2
01 June0
Channel Posts
Диагностика event loop stalls в production через monitorEventLoopDelay и async_hooks без гадания по p99 latency Event loop st
Диагностика event loop stalls в production через monitorEventLoopDelay и async_hooks без гадания по p99 latency Event loop stall важен там, где Node.js обслуживает API, воркеры, очереди и webhooks. Типичная ошибка - видеть рост latency и сразу винить БД, не проверив, не заблокирован ли сам JS thread. Первый сигнал - monitorEventLoopDelay perf_hooks.monitorEventLoopDelay() дает histogram задержек event loop и дешево работает как постоянная production-метрика.
import { monitorEventLoopDelay } from 'node:perf_hooks';

const h = monitorEventLoopDelay({ resolution: 20 });
h.enable();

setInterval(() => {
  const p99 = h.percentile(99) / 1e6;

  if (p99 > 100) {
    log.warn({
      event: 'event_loop_stall',
      p99Ms: p99.toFixed(1),
      maxMs: (h.max / 1e6).toFixed(1),
      ctx: als.getStore()
    });
  }

  h.reset();
}, 10_000).unref();
Если p99 delay внезапно стал 200-500ms+, процесс не успевает выполнять callbacks вовремя: CPU-bound JS, sync I/O, тяжелый JSON.parse, regexp, crypto, zlib или GC pressure. Контекст дает async_hooks monitorEventLoopDelay отвечает на вопрос "есть ли stall", но не говорит "кто виноват". Для production связывайте AsyncLocalStorage с request id, route, job name, tenant или queue message id. Практический пример: при stall логируйте route/job из ALS, а не только глобальный p99. Так можно увидеть, что задержки появляются рядом с POST /reports или конкретным batch job. Что отправлять в метрики * event_loop_delay_p50/p95/p99/max * CPU user/system * RSS и heap used * active handles/requests * route/job labels - осторожно, без высокой кардинальности Предупреждение: request id кладите в логи или трейсы, но не в метрики. Важный нюанс AsyncLocalStorage не профилирует CPU и не покажет строку кода. Он сохраняет контекст. Для строки нужен sampling profiler: inspector, --cpu-prof, perf/eBPF, Clinic или APM profiler. Нормальный flow: постоянно держать дешевый delay histogram, при threshold писать структурированный лог, при повторении включать profiler на короткое окно. Вывод: Event loop stall надо диагностировать в два шага: сначала измерить задержку loop, затем привязать ее к бизнес-контексту и только после этого идти в CPU profiling.

2
Совет на ближайшие годы — изучайте ВАЙБ-КОДИНГ ИИ уже пишет код, чинит баги, генерирует тесты, документацию и помогает запуск
Совет на ближайшие годы — изучайте ВАЙБ-КОДИНГ ИИ уже пишет код, чинит баги, генерирует тесты, документацию и помогает запускать продукты быстрее, чем это делали классические команды разработки. И это уже не "будущее когда-нибудь", а реальность, которая меняет рынок уже сегодня И те, кто научится вайбкодить сейчас, будут увереннее конкурировать на рынке и зарабатывать больше тех, кто по-прежнему делает всё вручную. Стартовать с нуля поможет канал Вайб-кодинг. Там ребята круглосуточно мониторят более 320 российских и зарубежных источников и публикуют только главное: релизы, инструменты, гайды, курсы и практические кейсы. Подписывайтесь, нас уже 45 тысяч: @vibecoding_tg
471
3
⁣AsyncLocalStorage в Node.js: request-scoped контекст для логов, трассировки и транзакций без prop drilling В production это нужно в Node.js-сервисах, SSR, API integration и backend-for-frontend слоях, где requestId, traceId, tenant или транзакция должны проходить через async-код. Частая ошибка - протаскивать ctx через десятки методов или, наоборот, прятать в нём бизнес-состояние. Как это выглядит AsyncLocalStorage использует async_hooks и привязывает store к async execution flow: promise, timeout, I/O callback и большинству стандартных API Node.js. type Ctx = { requestId: string; traceId?: string; tx?: unknown }; const als = new AsyncLocalStorage<Ctx>(); app.use((req, _res, next) => { als.run({ requestId: req.headers['x-request-id']?.toString() ?? randomUUID(), traceId: req.headers.traceparent?.toString(), }, next); }); const getCtx = () => als.getStore(); function logInfo(msg: string, meta = {}) { const c = getCtx(); logger.info({ requestId: c?.requestId, traceId: c?.traceId, ...meta, }, msg); } Теперь сервисный код не знает про HTTP middleware и req, но логи автоматически получают correlation metadata. Транзакции без протаскивания tx Для DB слоя можно делать withTransaction(), который запускает als.run({ ...ctx, tx }, fn), а getDbExecutor() возвращает ctx.tx ?? db. Trade-off хороший: меньше шума в API сервисов, но граница ответственности остаётся инфраструктурной, а не бизнесовой. Где границы * не заменяйте аргументы функции: бизнес-данные передавайте явно; * не кладите в store req, res, большие payload или ORM graph; * context не пересекает process boundary: worker threads, очереди, cron jobs и другие сервисы требуют явной передачи ids; * нестандартные callback-based библиотеки могут разорвать async chain. Практическое правило: используйте AsyncLocalStorage для логов, tracing, tenant/user metadata, аудита и текущей транзакции, а не для скрытого глобального состояния. Вывод: AsyncLocalStorage полезен, когда request-scoped инфраструктурный контекст улучшает observability и DX, но не размывает явные границы бизнес-логики.
602
4
АЙТИШНИКИ БЕСПЛАТНОЕ ОБУЧЕНИЕ сборник курсов, инструментов и книг Проект «TERMINAL» стал крупнейшей библиотекой бесплатного о
АЙТИШНИКИ БЕСПЛАТНОЕ ОБУЧЕНИЕ сборник курсов, инструментов и книг Проект «TERMINAL» стал крупнейшей библиотекой бесплатного образования. В одном канале собраны курсы, книги, полезные инструменты и практические тренажёры для всех разработчиков 🎓 Практические курсы и задания 🪽 Книги и статьи известных авторов 😮‍💨 Полезные инструменты и ресурсы 🌟 IT-новости и инсайды Обучение по всем направлениям: SQL, Python, Frontend, PHP, C++, Golang, GIT, Linux, QA, Java, Vibe-coding, Infosec и др. Ценишь знания, подпишись: Terminal_tg
719
5
⁣Graceful shutdown в Node.js под Kubernetes: drain keep-alive соединений, SIGTERM и защита от 502 при rolling update При rolling update старый Pod может уже получить SIGTERM, но Ingress, kube-proxy или external LB еще слать в него трафик. Частая ошибка - сразу делать process.exit() и рвать активные запросы. Что ломается в production Особенно больно с keep-alive: балансировщик держит открытое TCP-соединение к Pod и переиспользует его, пока приложение уже закрывается. Итог - 502, 503, connection reset на деплое. Правильный порядок: * уронить readiness * дать балансировке убрать Pod * закрыть HTTP-сервер * drain'ить idle keep-alive * дождаться активных запросов Node.js shutdown let shuttingDown = false; app.get('/readyz', (req, res) => { res.sendStatus(shuttingDown ? 503 : 200); }); async function shutdown(signal) { if (shuttingDown) return; shuttingDown = true; await new Promise(r => setTimeout(r, 10_000)); server.close(err => { if (err) process.exit(1); process.exit(0); }); server.closeIdleConnections?.(); setTimeout(() => { server.closeAllConnections?.(); process.exit(1); }, 25_000); } process.on('SIGTERM', () => shutdown('SIGTERM')); Важная деталь: во время drain delay /readyz уже отвечает 503, но обычные запросы еще обслуживаются. Kubernetes-настройки terminationGracePeriodSeconds: 40 readinessProbe: httpGet: path: /readyz port: 3000 periodSeconds: 5 failureThreshold: 1 lifecycle: preStop: exec: command: ["sh", "-c", "sleep 10"] Практический совет: держите terminationGracePeriodSeconds больше, чем preStop + app drain delay + max request time + запас. Типичная ошибка server.close() недостаточно как единственная мера. Он останавливает новые соединения, но idle keep-alive сокеты лучше закрывать явно через closeIdleConnections(). closeAllConnections() используйте только как аварийный fallback. Вывод: Graceful shutdown - это координация Node.js runtime, readiness, keep-alive и поведения балансировщика, а не один handler на SIGTERM.
689
6
AbortSignal.any() и AbortSignal.timeout(): единая отмена fetch, таймеров и async-операций в production Promise.race([fetch(),
AbortSignal.any() и AbortSignal.timeout(): единая отмена fetch, таймеров и async-операций в production Promise.race([fetch(), timeout]) часто маскирует проблему: ждать перестали, но работа могла не остановиться. В SPA, SSR, Node.js-сервисах, SDK и API clients это приводит к висящим запросам, таймерам и retry/backoff ниже по стеку. Собирайте отмену вокруг AbortSignal AbortSignal.timeout(ms) сам отменится по таймауту. AbortSignal.any([...signals]) отменится, когда отменится любой входной signal. Так в один контракт попадают: * caller отменил операцию * истек timeout * клиент закрыл соединение * сервис уходит в graceful shutdown const shutdown = new AbortController(); async function loadUser(id: string, opts: { signal?: AbortSignal } = {}) { const signal = AbortSignal.any([ AbortSignal.timeout(1500), shutdown.signal, ...(opts.signal ? [opts.signal] : []), ]); signal.throwIfAborted(); const res = await fetch(`https://api.example.com/users/${id}`, { signal }); await sleep(100, signal); // backoff тоже отменяем const data = await res.json(); signal.throwIfAborted(); return data; } Типичная ошибка Не останавливайтесь на fetch. Один и тот же signal стоит передавать в retry, polling, очереди, sleep/timer helpers и свои async-функции. Иначе верхний слой "отменился", а нижний продолжает держать ресурсы. Практические нюансы * AbortSignal одноразовый: если aborted === true, нужен новый controller или timeout * AbortSignal.any() - это fan-in, а не fan-out: он не отменяет исходные контроллеры * смотрите на reason: timeout часто дает TimeoutError, abort - AbortError или ваш reason * при обертках над setTimeout, stream, listener или socket чистите ресурсы при abort Вывод: Отмена должна быть частью контракта async-функции, а не локальным Promise.race на краю системы.
745
7
Нейросети, IT и AI — в одной папке 💬 С коллегами собрали новые каналы про: 💠 промпты для нейросетей и готовые решения 💠 AI
Нейросети, IT и AI — в одной папке 💬 С коллегами собрали новые каналы про: 💠 промпты для нейросетей и готовые решения 💠 AI-фотосессии, генерация изображений и контента 💠 новости искусственного интеллекта без лишнего шума 💠 применение AI в работе, бизнесе и повседневной жизни 💠 Python, JavaScript, Data Science и системный анализ 💠 вакансии и возможности для специалистов в IT Посмотреть и подписаться тут 👉 https://t.me/addlist/c_rbhnzprbAwMmFi 💌 Добавить свой канал в папку
771
8
Страшная тайна российского айти ✖️ xCode Journal
Страшная тайна российского айти ✖️ xCode Journal
1 251
9
Хватит гадать — DeepSeek за тебя уже всё решил 🐳 * Сейчас все только про Claude, но я перешёл на DeepSeek и не жалею. Беспла
Хватит гадать — DeepSeek за тебя уже всё решил 🐳 * Сейчас все только про Claude, но я перешёл на DeepSeek и не жалею. Бесплатно, контекст 1 млн токенов — закинул целую книгу, помнит всё. Код пишет отлично, а рассуждения (Reasoning) выдают логику, как у архитектора. Решил протестировать агентский режим на задаче, которую вечно откладывал — собрать чистое инфополе с нуля. Чтобы не перебирать паблики вручную, зашёл через функцию похожих каналов в Telegram. Скормил DeepSeek ссылки на качественных авторов по IT и AI, которых читаю сам, и попросил проанализировать сотни рекомендаций. Агент изучил контент на каналах и оставил только тех, кто делится практическим опытом по: AI-воркфлоу, автоматизации, вайб-кодингу, промт-инжинирингу, RAG-syst. нейрогенерации и др. DeepSeek собрал полезную подборку экспертов в одну папку. Делюсь списком — внутри только полезный контент про IT & AI. 🔗Забирай в один клик: 👉 https://t.me/addlist/FYyQj91I8jJiMzg0
1 004
10
⁣Variadic tuple types — сложные сигнатуры без боли До variadic tuple types многие сложные сигнатуры в TypeScript выглядели как наказание. Особенно: 👉 curry 👉 compose 👉 middleware 👉 typed event emitter 👉 любые функции с «прокинь аргументы дальше» Приходилось писать overload на overload и дублировать типы вручную. Как было раньше Обычно появлялись: 👉 overload на overload 👉 ручные tuple-типы 👉 тонны дублирования Типы быстро превращались в нечитаемую простыню. Что изменили variadic tuples С их появлением стало намного проще работать с остаточными аргументами на уровне типов. Например: type Fn<T extends unknown[]> = (...args: [...T]) => void Или собирать сигнатуры: type Append<Args extends unknown[], Arg> = [...Args, Arg] Типы наконец научились нормально работать с «переменным количеством аргументов». Почему это важно На практике это одна из тех TS-фич, которые реально упростили жизнь библиотекам. Без variadic tuples: 👉 Redux middleware typings 👉 router APIs 👉 compose/curry utilities были бы ещё страшнее. Где начинается тёмная магия Проблемы начинаются, когда variadic tuples комбинируют с: 👉 infer 👉 recursive types 👉 conditional types Типовая система очень быстро превращается в тёмный лес. IDE начинает тормозить, ошибки становятся нечитаемыми, а compile time — расти. Главная мысль Variadic tuple types — это действительно мощная фича. Главное — вовремя остановиться и не превратить типы в отдельный язык программирования.
1 043
11
Стажировки и вакансии для JavaScript разработчиков - Вакансии которых нет на джоб-агрегаторах - Только прямые контакты HR в T
Стажировки и вакансии для JavaScript разработчиков - Вакансии которых нет на джоб-агрегаторах - Только прямые контакты HR в Telegram @jobs_js_fronted для фронтов @jobs_js_back для бека Пока другие листают джоб-сайты — ты уже пишешь HR в Telegram.
805
12
🤣 Не баг, а фича ✖️ xCode Journal
🤣 Не баг, а фича ✖️ xCode Journal
1 479
13
⁣ES2025: Импорт JSON-файлов как модулей Введение С выходом ECMAScript 2025 (ES2025) разработчики получили возможность напрямую импортировать JSON-файлы как модули в JavaScript-коде. Это упрощает работу с конфигурационными данными и другими статическими ресурсами, представленными в формате JSON. Синтаксис импорта JSON-модулей Для импорта JSON-файла используется ключевое слово import с указанием атрибута with { type: 'json' }. Это гарантирует, что импортируемый файл будет обработан как JSON-модуль. Пример использования Рассмотрим пример импорта конфигурационного файла config.json и обращения к его свойствам в коде. import config from './config.json' with { type: 'json' }; .log(config.apiUrl); // Выводит значение свойства apiUrl из config.json console.log(config.timeout); // Выводит значение свойства timeout из config.json ❗️Добавление поддержки импорта JSON-файлов как модулей в ES2025 упрощает работу с данными в формате JSON, делая код более чистым и понятным. Источники JSON Modules Can Now Be Imported in JavaScript in All Modern Browsers, CSS Modules to Follow. New Features in ES2025 – BooleanBuffer.
2 119
14
Стажировки и вакансии для JavaScript разработчиков - Вакансии которых нет на джоб-агрегаторах - Только прямые контакты HR в T
Стажировки и вакансии для JavaScript разработчиков - Вакансии которых нет на джоб-агрегаторах - Только прямые контакты HR в Telegram @jobs_js_fronted для фронтов @jobs_js_back для бека Пока другие листают джоб-сайты — ты уже пишешь HR в Telegram.
732
15
⁣Recursive type limits — почему TS иногда «умирает» В TypeScript можно написать тип, который выглядит красиво, но заставляет компилятор страдать. Особенно когда начинаются рекурсивные типы. Например: 👉 глубокий DeepPartial 👉 парсинг строк на уровне типов 👉 сложные conditional types 👉 infer внутри infer На маленьком примере всё работает. В реальном проекте IDE внезапно начинает думать по 5 секунд. Почему так происходит TypeScript не вычисляет типы «бесплатно». Каждый: 👉 conditional type 👉 union 👉 recursive шаг нужно реально посчитать. А если тип разворачивается слишком глубоко, компилятор упирается в лимиты. Отсюда знакомое: Type instantiation is excessively deep and possibly infinite И это не всегда баг TypeScript. Часто это сигнал, что типовая модель стала слишком умной. Где обычно всё ломается Особенно опасны: 👉 рекурсивные mapped types 👉 огромные union’ы 👉 type-level parser’ы 👉 deeply nested generics 👉 utility types поверх utility types Типы начинают взрываться комбинаторно. Что обычно помогает 👉 не делать type-level акробатику без нужды 👉 ограничивать глубину рекурсии 👉 разбивать типы на более простые 👉 добавлять явные промежуточные типы 👉 не тащить сложные generic-типы в публичный API Почему это важно Сложные типы бьют не только по компиляции. Они ухудшают: 👉 autocomplete 👉 responsiveness IDE 👉 читаемость кода 👉 onboarding новых людей Иногда самый дорогой runtime — это compile time. Главная мысль Хороший TypeScript — это не когда типы поражают воображение. Хороший TypeScript — это когда их можно понять через полгода, а IDE при этом не превращается в обогреватель.
1 534
16
Привет, друзья! Собрали с коллегами новую папку с каналами Здесь AI-новости, нейросети, полезные инструменты, примеры внедрен
Привет, друзья! Собрали с коллегами новую папку с каналами Здесь AI-новости, нейросети, полезные инструменты, примеры внедрения ИИ в крупный бизнес, разработка, JS, Node.js, frontend, QA, Data Science, кибербезопасность и IT-вакансии. Посмотреть и подписаться можно тут 👉 https://t.me/addlist/XttiKDt6lhUwMzEy 💌 записаться в папку
742
17
На Stepik запустили мощный курс по «Troubleshooting Docker и Kubernetes: поиск и устранение проблем» В программе только важны
На Stepik запустили мощный курс по «Troubleshooting Docker и Kubernetes: поиск и устранение проблем» В программе только важные аспекты: — troubleshooting Docker и образов — диагностика сетевых проблем — настройка readiness/liveness probes — отладка pod’ов, деплоев и ingress — анализ логов контейнеров и кластера — разбор ошибок CrashLoopBackOff, OOMKilled, ImagePullBackOff и других Собеседования на DevOps/SRE сейчас всё чаще строятся вокруг реальных инцидентов. Данный курс фокусируется именно на таких сценариях и помогает в подготовке к практическим вопросам 48 часов доступен со скидкой 25% ↗️ Пройти курс на Stepik
830
18
⁣Isolated declarations — ускорение больших monorepo В TypeScript есть флаг isolatedDeclarations. Он нужен не для красоты типов, а для скорости. Проблема простая: в больших monorepo генерация .d.ts может становиться узким местом. TypeScript часто должен анализировать соседние файлы, чтобы понять, какие декларации вывести. На маленьком проекте это почти незаметно. На большом — начинает болеть. Что делает isolatedDeclarations isolatedDeclarations заставляет писать код так, чтобы декларации можно было генерировать по файлам независимо. Из-за этого TypeScript чаще требует явные типы. Было: export function getUser() { return { id: 1, name: 'Alex' } } Лучше так: type User = { id: number name: string } export function getUser(): User { return { id: 1, name: 'Alex' } } Меньше магии для компилятора — быстрее и предсказуемее сборка. Почему это важно Когда проект растёт: 👉 TypeScript начинает сильнее зависеть от соседних файлов 👉 инкрементальная сборка замедляется 👉 генерация типов становится дорогой Изоляция помогает компилятору работать параллельно и проще. Где это особенно полезно 👉 большие monorepo 👉 библиотеки 👉 project references 👉 параллельная сборка 👉 CI, где каждая минута стоит денег Главный trade-off Ты немного платишь: 👉 более явными типами 👉 меньшим type inference 👉 дополнительным boilerplate Но взамен получаешь: 👉 более быстрые сборки 👉 стабильный compile pipeline 👉 меньше скрытой сложности Главная мысль Это хороший пример взрослого engineering trade-off: чуть больше явности в коде ради скорости и предсказуемости системы.
1 303
19
⁉️ Устал искать интересные каналы с новостями про искусственный интеллект? 📁 СОХРАНИ СЕБЕ ЧТОБЫ НЕ ПОТЕРЯТЬ В этой папке соб
⁉️ Устал искать интересные каналы с новостями про искусственный интеллект? 📁 СОХРАНИ СЕБЕ ЧТОБЫ НЕ ПОТЕРЯТЬ В этой папке собраны каналы про ИИ, которые помогают быстрее разобраться в сфере, находить идеи и экономить время на поиске информации. 😏 ЗАБИРАЙ ПАПКУ ТУТ ⏰ Папка действует 72 часа. 🤩 Организаторы: Green.Papka
1 367
20
🤣 Мем отлично отражает настроения в сообществе прямо сейчас ✖️ xCode Journal
🤣 Мем отлично отражает настроения в сообществе прямо сейчас ✖️ xCode Journal
1 425