- Добавлена документация SLM-архитектуры, базовых правил и прикладных разделов - Добавлены разделы: стили, SVG-спрайты, шаблоны генерации, PostCSS, REST, Realtime - Удалены устаревшие файлы (спрайты, скрипты, стили из app/)
58 lines
1.7 KiB
Markdown
58 lines
1.7 KiB
Markdown
---
|
||
title: Типизация
|
||
description: Как типизируется код в проекте.
|
||
---
|
||
|
||
# Типизация
|
||
|
||
Как типизируется код в проекте.
|
||
|
||
## Общие правила
|
||
|
||
- Указывать типы для параметров компонентов, возвращаемых значений и параметров функций.
|
||
- Предпочитать `type` для описания сущностей и `interface` для расширяемых контрактов.
|
||
- Избегать `any` и `unknown` без необходимости.
|
||
- Не использовать `ts-ignore`, кроме крайних случаев с явным комментарием причины.
|
||
|
||
## Функции
|
||
|
||
- Для публичных функций указывать возвращаемый тип.
|
||
- Не полагаться на неявный вывод для важных API.
|
||
|
||
**Хорошо**
|
||
```ts
|
||
export const formatPrice = (value: number): string => {
|
||
return `${value} ₽`;
|
||
};
|
||
```
|
||
|
||
**Плохо**
|
||
```ts
|
||
// Плохо: нет явного возвращаемого типа.
|
||
export const formatPrice = (value: number) => {
|
||
return `${value} ₽`;
|
||
};
|
||
```
|
||
|
||
## Работа с any/unknown
|
||
|
||
- `any` использовать только для временных заглушек.
|
||
- `unknown` сужать через проверки перед использованием.
|
||
|
||
**Хорошо**
|
||
```ts
|
||
const parse = (value: unknown): string => {
|
||
if (typeof value === 'string') {
|
||
return value;
|
||
}
|
||
|
||
return '';
|
||
};
|
||
```
|
||
|
||
**Плохо**
|
||
```ts
|
||
// Плохо: any отключает проверку типов.
|
||
const parse = (value: any) => value;
|
||
```
|