forked from templates/nextjs-template
2.0 KiB
2.0 KiB
title, description
| title | description |
|---|---|
| Типизация | Как типизируется код в проекте. |
Типизация
Как типизируется код в проекте.
Общие правила
- Указывать типы для параметров компонентов и параметров функций.
- Предпочитать
typeдля описания сущностей иinterfaceдля расширяемых контрактов. - Избегать
anyиunknownбез необходимости. - Не использовать
ts-ignore, кроме крайних случаев с явным комментарием причины.
React-компоненты
- Пропсы компонента типизировать через отдельный
Props. - Возвращаемый тип компонента не указывать: TypeScript корректно выводит JSX-результат, а явный
ReactElementсужает допустимые варианты возврата.
Функции
- Для публичных функций указывать возвращаемый тип.
- Не полагаться на неявный вывод для важных 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;