- переработан раздел «Компоненты»: добавлены правила организации, типизации, реализации - переработан раздел «Структура проекта»: упрощён, добавлены корень репозитория и конфиг-файлы - переработан раздел «Документирование»: добавлены шаблоны для функций, компонентов, типов - обновлён CONTRIBUTING.md: добавлены секции Workflow и Чеклист, правила разделены на Реализацию и Организацию - перенесены типы компонентов из «Типизации» в «Компоненты» - обновлён шаблон генерации: деструктуризация пропсов в теле, children вместо текста - добавлен SCREAMING_SNAKE_CASE для ключей enum в «Именование» - перемещён «Настройка VS Code» в конец сайдбара - обновлён порядок файлов в concat-md.js и перегенерирован RULES.md
1.7 KiB
1.7 KiB
title
| title |
|---|
| Типизация |
Типизация
Этот раздел описывает правила типизации: как типизировать компоненты, функции и работу с any/unknown.
Общие правила
- Указывать типы для параметров компонентов, возвращаемых значений и параметров функций.
- Предпочитать
typeдля описания сущностей иinterfaceдля расширяемых контрактов. - Избегать
anyиunknownбез необходимости. - Не использовать
ts-ignore, кроме крайних случаев с явным комментарием причины.
Функции
- Для публичных функций указывать возвращаемый тип.
- Не полагаться на неявный вывод для важных API.
Хорошо
export const formatPrice = (value: number): string => {
return `${value} ₽`;
};
Плохо
// Плохо: нет явного возвращаемого типа.
export const formatPrice = (value: number) => {
return `${value} ₽`;
};
Работа с any/unknown
anyиспользовать только для временных заглушек.unknownсужать через проверки перед использованием.
Хорошо
const parse = (value: unknown): string => {
if (typeof value === 'string') {
return value;
}
return '';
};
Плохо
// Плохо: any отключает проверку типов.
const parse = (value: any) => value;