
React
Используйте функциональные компоненты.
Всегда используйте функциональные компоненты TSX. Не используйте стандартныйimport с const, так как это сложнее для чтения и импорта с автозаполнением кода.
Свойства
Создайте тип пропсов и назовите его(ComponentName)Props, если нет необходимости экспортировать его.
Используйте деструктуризацию пропсов.
Воздержитесь от использования React.FC или React.FunctionComponent для определения типов пропсов.
Нет разворачивания пропсов одиночной переменной в JSX-элементах.
Avoid using single variable prop spreading in JSX elements, like{...props}. Подобная практика часто приводит к менее читаемому и сложному в поддержке коду, так как непонятно, какие пропсы принимает компонент.
- С первого взгляда становится яснее, какие пропсы передаются в коде, что делает его легче понятным и поддерживаемым.
- Это помогает предотвратить жесткое связывание между компонентами через их пропсы.
- Инструменты для анализа кода облегчают обнаружение опечаток или неиспользуемых пропсов при явном перечислении пропсов.
JavaScript
Используйте оператор нулевого слияния ??
Используйте опциональную цепочку ?.
TypeScript
Используйте type вместо interface
Всегда используйте type вместо interface, так как они почти всегда пересекаются, а type более гибок.
Используйте строковые литералы вместо перечислений.
Строковые литералы - это основной способ обработки значений, напоминающих перечисление, в TypeScript. Они легче расширяются с помощью Pick и Omit и обеспечивают лучшее взаимодействие с разработчиком, особенно с автозаполнением кода. Вы можете увидеть, почему TypeScript рекомендует избегать перечислений здесь.GraphQL и внутренние библиотеки
Вы должны использовать перечисления, которые генерирует кодогенератор GraphQL. Также лучше использовать перечисление при использовании внутренней библиотеки, чтобы она не требовала явного указания типа строкового литерала, не связанного с внутренним API. Пример:Стилизация
Использование StyledComponents
Стилизуйте компоненты с помощью styled-components.Темизация
Использование темы для большинства стилевых компонентов является предпочтительным подходом.Единицы измерения
Избегайте использования значенийpx или rem напрямую в стилизованных компонентах. Необходимые значения обычно уже определены в теме, поэтому рекомендуется использовать тему для этих целей.
Цвета
Избегайте введения новых цветов; используйте существующую палитру из темы. Если палитра не соответствует, оставьте комментарий, чтобы команда могла это исправить.Запрещение импорта типов
Избегайте импорта типов. Чтобы поддерживать этот стандарт, ESLint проверяет и сообщает о любых нарушениях импорта типов. Это помогает сохранить согласованность и читаемость кода TypeScript.Почему избегать импорта типов
- Согласованность: Избегая импорта типов и используя единый подход для импорта как типов, так и значений, кодовая база остается согласованной в стиле импорта модулей.
- Читаемость: Избегающий импорт типов улучшает читаемость кода, делая ясным, когда вы импортируете значения или типы. Это снижает двусмысленность и облегчает понимание назначения импортируемых символов.
- Maintainability: It enhances codebase maintainability because developers can identify and locate type-only imports when reviewing or modifying code.
Правило ESLint
An ESLint rule,@typescript-eslint/consistent-type-imports, enforces the no-type import standard. Это правило создаст ошибки или предупреждения для всех нарушений импорта типов.
Обратите внимание, что это правило касается редких крайних случаев, когда случаются непреднамеренные импорты типов. TypeScript itself discourages this practice, as mentioned in the TypeScript 3.8 release notes. В большинстве случаев вам не нужно использовать импорты только типов.
Чтобы гарантировать соответствие вашего кода этому правилу, убедитесь, что вы запускаете ESLint как часть вашего рабочего процесса разработки.