DTO
DTO (Data Transfer Objects) — это TypeScript-описания форматов запросов и ответов бэкенда. Они организованы по доменам в src/dto/<домен>/, по одному типу на файл, и реэкспортируются из корня пакета.
import type {
ClientDto,
CreateClientRequestDto,
ClientStatusDto,
} from '@diealltagsfeen/frontend-api-client'Категории типов
| Суффикс / форма | Назначение | Пример |
|---|---|---|
XxxDto (interface) | Сущность из ответа | ClientDto, InsuranceDto |
XxxDto / XxxParam (enum) | Перечисление с бэкенд-кодами | ClientStatusDto, GenderParam |
CreateXxxRequestDto / UpdateXxxRequestDto | Тело POST/PUT-запроса | CreateClientRequestDto |
GetXxxResponseDto | Форма успешного ответа | GetWorkTimeSettingsResponseDto |
GetXxxRequestDto / XxxRequestParam | Параметры GET-запроса | GetClientsRequestDto |
Сущности
Сущности — это interface с типизированными (часто вложенными) полями:
export interface InsuranceDto {
id: number
number?: string | null
type?: InsuranceTypeDto | null
clientId: number
insuranceCompanyId?: number | null
coveragePercentage?: number | null
insuranceCompany?: InsuranceCompanyDto | null
}Перечисления (enum)
Статусы, типы и категории — это TypeScript-enum, числовые значения которых совпадают с кодами бэкенда:
export enum ClientStatusDto {
WaitClientCall = 101,
InProgress = 400,
Closed = 901,
Archived = 902,
}Использование вместо «магических чисел»:
import { ClientStatusDto } from '@diealltagsfeen/frontend-api-client'
await clientService.UpdateStatus({ clientId: 123, status: ClientStatusDto.InProgress })Метки и цвета для UI
Сами по себе DTO-перечисления не содержат i18n-ключей и цветов — это чисто значения, синхронизированные с бэкендом. Отображаемые названия, цвета и иконки статусов задаются на стороне приложения-потребителя.
Пагинация
Общие типы пагинации лежат в dto/common:
// запрос (frontend-форма; сервис маппит page → Pagination.CurrentPage)
interface Pagination {
page: number
rowsPerPage: number
sortBy: string
descending: boolean
}
// ответ — конверт со списком и общим количеством
interface PaginationResult<T> {
values: T[]
totalCount: number
}Типизация ответа со списком:
const result = await workerService.GetTable(queryString)
if (result) {
const page = result.pagination as PaginationResult<WorkerDto>
page.values.forEach(useWorker)
}Где смотреть полный список
Полный перечень DTO по доменам с таблицами полей, типов, обязательности и примерами JSON — в разделе API Reference → DTO. При наличии бэкенд-snapshot документация дополняется C#-типами и числовыми кодами enum.