Обновить
50.39

TypeScript *

Cтрого типизированная надстройка для JavaScript

Сначала показывать
Порог рейтинга
Уровень сложности

Typescript ENUM — баланс использования

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели21K

Привет Всем.

Меня зовут Михаил. В НЛМК нахожусь на должности Frontend-разработчика.  Занимаюсь разработкой внутренних информационных систем на React + Typescript.

В этой статье поговорим про тип enum (перечисление) в Typescript, о случаях когда его можно и нужно использовать, а когда нет.

Перечисления бывают числовыми и строковыми. Например, представим в виде перечисления должности работников кафе.

Рассмотрим перечисления с числовыми значениями:

Читать далее

Кодогенерация и парсинг TypeScript с помощью typescript

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели9.6K

Одной из интересных возможностей пакета typescript является то, что он содержит API для генерации TypeScript-кода, а также парсер для работы с написанным на TypeScript кодом. Кодогенерация часто используется для автоматического создания типов для работы с http api (типизация тела запроса, ответа, query параметров и тд.). В npm есть модули, генерирующие сервисы для работы с api на основе openapi, graphQl схем и тому подобное, и обычно возможностей существующих модулей хватает для решения большей части задач.

Но иногда возникает потребность расширить имеющийся интерфейс или даже написать свою кастомную реализацию. В этой статье мы рассмотрим основные принципы работы с инструментами для генерации и парсинга typescript кода, а так же некоторые подводные камни, на которые я наткнулся при работе с ним.

Читать далее

Oxlint — более быстрая альтернатива ESLint

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели16K

Друзья, всем привет! Меня зовут Игорь Карелин, я frontend-разработчик в компании Домклик. Недавно стал общедоступен новый линтер «Oxlint», основанный на языке программирования Rust, и многие эксперты высоко оценили его. Какие преимущества Oxlint предоставляет по сравнению со своим предшественником ESLint?

Читать далее

Загрязненный — значит опасный: про уязвимость Prototype Pollution

Время на прочтение5 мин
Охват и читатели5.8K

Prototype Pollution (CVE-2023-45811, CVE-2023-38894, CVE-2019-10744) — не новая брешь, вы уже наверняка читали про нее и на Хабре, и на PortSwigger, и даже в научных журналах, но есть нюанс. Несмотря на большое количество публикаций, некоторые популярные решения до сих пор остаются уязвимыми для нее. Очередной пациент — библиотека на TypeScript @clickbar/dot-diver. Уязвимость CVE-2023-45827 исправлена в версии 1.0.2 и выше, поэтому мы со спокойной душой расскажем, что могло произойти с вашим продуктом, но, к счастью, не произошло.

Под катом читайте о том, как нужно было пользоваться библиотекой, чтобы точно столкнуться с уязвимостью Prototype Pollution. Мы, кстати, писали про нее в своем телеграм-канале POSIdev — там свежие новости про безопасную разработку, AppSec, а также регулярные обзоры трендовых угроз и наша любимая рубрика «Пятничные мемы».

Итак, поехали!

Taiga UI: итоги 2023 года

Время на прочтение10 мин
Охват и читатели11K

Заканчиваются рабочие дни уходящего года, а значит, самое время подводить итоги наших трудов. За 2023 год у проекта Taiga UI появилось более пятидесяти релизов, больше двух тысяч вмерженных PR-ов и свыше пятисот закрытых issue.

Taiga UI — это огромный Angular UI Kit, который активно используется в сотне продуктов компании Тинькофф и популярен за ее пределами. Разработка проекта много лет идет в Open Source, собирая свою аудиторию по всему миру.

Продолжу ежегодную традицию и напомню пользователям библиотек о самых интересных изменениях за последний год.

Читать далее

Кастомизация бессерверных функций без применения промежуточного ПО

Время на прочтение10 мин
Охват и читатели1.2K
Когда пишешь код для серверного API, часто требуется проделывать схожие шаги: аутентифицировать пользователей, уточнять их роли и выставленные флаги функций, т.д. В большинстве фреймворков для бэкенда безупречно организовано взаимодействие с обработчиками запросов. Часто такой софт называют «промежуточное ПО» (middleware), поскольку он находится между кодом приложений и кодом системы. В этой статье я аргументирую, почему стоит обходиться как можно меньшим объёмом промежуточного ПО, и рассказываю, как при этом не сойти с ума.

Зачем он нам вообще может понадобиться?


На первом этапе работы можно заметить, что каждая функция у вас начинается с множества повторяющихся строк, например:
Читать дальше →

Валидация формы с помощью AJV, Vue.js и TypeScript

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели4.1K

Валидация форм является важной частью фронтенд-разработки, которая помогает улучшить пользовательский опыт и предотвратить ошибки при отправке данных на сервер. В этой статье мы рассмотрим, как использовать библиотеку AJV совместно с Vue.js и TypeScript для создания мощной системы валидации формы.

Читать далее

Функция TypeScript 5.3, о которой вам не рассказали

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели11K

20 ноября команда TypeScript выпустила TS 5.3.

Как обычно, я просканировал сообщение об анонсе, но быстро заметил кое-что интересное.

Одно из самых важных изменений в TypeScript 5.3 не было упомянуто в примечаниях к релизу.

Читать далее

Vue state management: Pinia stores или composables с глобальными рефами?

Время на прочтение2 мин
Охват и читатели11K

На Reddit прошла интересная дискуссия с 25К+ просмотрами по вопросу предпочтений разработчиков при необходимости управлять глобальным состоянием во Vue 3. Ниже её итоги.

Читать далее

Как автоматизировать использование дизайн токенов с помощью Stylelint и PostCSS

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели5.1K

Привет, Хабр!

Меня зовут Саша и вот уже 7 лет я работаю фулстек разработчиком и пишу на C# и TypeScript/React.

Сегодня я хотел бы поделиться своим небольшим успехом в автоматизации. В какой-то момент я понял, что во время код ревью я указываю разработчикам на одни и те же ошибки. Но, что ещё хуже, я сам время от времени допускаю эти ошибки. Сегодня хочу рассказать об одной из таких проблем, которую я решил с помощью PostCSS + Stylelint, и о том, как я это сделал.

Статья будет полезна для разработчиков, которые уже используют или собираются использовать дизайн токены.

Начнём!

История создания Оптимизатора для ПК: Nuxt.js, Electron и C++ в Одном Проекте

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели4.9K

Как я проектировал свой самый большой проект, сложности с которыми я столкнулся. Фишки и неочевидные моменты при разработке.

Читать далее

Typescript: принцип подстановки функций

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели8.6K

По аналогии с принципом LSP из ООП, при работе с функциями в Typescript стоит придерживаться следующего принципа:

Принимая колбэк с меньшим числом аргументов, оборачивайте его, прежде, чем передавать его далее в качестве колбэка с большим числом аргументов.

Почему это так?

Как я сделал проект для себя и получил приз от Telegram

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели23K

Всем привет! Telegram устроил конкурс на разработку мини-приложений, где моя работа заняла призовое место. В конкурсе была высокая конкуренция, так как выбор технологий и идеи для приложения был свободный. В связи с этим Telegram даже увеличил общую стоимость призовых. В этой статье разберём как проходила разработка, с какими сложностями столкнулся и чему научился.

Читать далее

Ближайшие события

TypeScript: infer и conditional types. Продвинутый TS на примерах

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели84K

Разбираемся, что же такое conditional types и как написать свои утилиты, такие как ReturnType, InstanceType, NonNullable и др., при помощи ключевых слов infer и extends.

Читать далее

TypeScript: операции Union и Intersection в свете теории множеств

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели11K

Недавно мне задали вопрос «почему пересечение в TS работает не как в теории множеств, а совсем наоборот?»

Озадачился, задумался и стал разбираться, как согласуются, и согласуются ли вообще операции «объединение» и «пересечение» в TypeScript и в теории множеств? И действительно ли пересечение в TS работает прямо противоположно?

Читать далее

Пишем файловую систему для работы с изображениями на TypeScript

Уровень сложностиСредний
Время на прочтение19 мин
Охват и читатели9K

В этой статье мы займемся созданием файловой системы на NodeJS + TypeScript в пользовательском пространстве, которая будет управлять изображениями пользователей. Она будет преобразовывать их в различные форматы, изменяя размеры и предоставляя уникальные бинарные данные изображения при каждом чтении — ведя себя при этом как стандартная файловая система.

Если вам интересна данная тема, добро пожаловать под кат.

Читать далее

Decky Notifications: как переизобрести KDE Connect и перенести уведомления в Steam Deck

Время на прочтение12 мин
Охват и читатели5.2K

Недавно в мои руки попала портативная игровая консоль Steam Deck. Замечательное устройство, которое полностью поглощает внимание. В этом я вскоре нашел минус: телефон генерирует уведомления и приходится откладывать приставку, чтобы посмотреть сообщение.

Хочу играть и не проверять телефон, но при этом боюсь пропустить что-то важное. И я нашел способ решение этой задачи. В этой статье расскажу, как мне пришлось полностью перебрать протокол KDE Connect, чтобы написать плагин, который переносит уведомления в Steam Deck. Подробности под катом!
Читать дальше →

TabNine: проверка на практике функционала и новая реальность разработки с ИИ

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели17K

Привет, Хабр! На связи команда Work Solutions. Мы попросили нашего фронтенд-разработчика Александра Шапорова поделиться опытом работы с функционалом AI ассистента TabNine на реальном проекте. Саша расскажет, ускоряет ли утилита разработку, повышает ли качество кода и делает ли процесс программирования более продуктивным. А также объяснит, почему ассистенты на базе искусственного интеллекта не могут стать незаменимыми помощниками разработчиков в написании кода, и почему ИИ в ближайшее время не сможет полностью заменить программистов.

В мире кода и алгоритмов все чаще можно услышать разговоры о том, что ИИ скоро заменит программистов. Слова «искусственный интеллект» начинают обрастать мифами и легендами. Но давайте оставим футуристические сценарии. Сосредоточимся на том, что происходит сегодня. 

Армия ассистентов и утилит на базе искусственного интеллекта пополняется с каждым днем. Готова поддержать разработчиков в их нелегком деле. Среди ассистентов также появился TabNine. Разберемся, может ли этот «джинн в лампе» стать незаменимым помощником разработчиков в создании кода. 

В этой статье проанализируем примеры кода, сгенерированные AI ассистентом TabNine. Наше исследование не простая теория. Проверим результаты в контексте реального проекта и выясним, насколько код ИИ рабочий. Ответим на вопрос, можно ли использовать ассистента на реальных проектах. Расскажем о своих впечатлениях и результатах. 

Читать далее

Динамическое создание компонентов Angular на лету

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели11K

В этой статье мы поговорим о создании компонентов динамически, шаг за шагом пройдем этот путь. Помимо простого создания компонентов, мы поговорим о более продвинутых вещах, которые можно сделать в рамках этого процесса.

Углубиться

Неочевидные моменты TypeScript и способы их решения

Уровень сложностиСложный
Время на прочтение7 мин
Охват и читатели19K

Разрабатывая на TypeScript, можно столкнуться с ситуациями, в которых код будет работать не так, как ожидается. В статье разберем несколько таких моментов. Часть просто придется иметь ввиду, часть решается обновлением, а часть исправляется – обо всем по порядку.

Если вам будет удобно сразу же проверять каждый пример, читая статью, можно это делать в редакторе. Он удобен тем, что версию TypeScript в нем можно переключать.

Читать далее