---
title: Import Patterns and Named Exports
impact: MEDIUM
impactDescription: Consistent imports improve readability and tree-shaking
tags: quality, imports, typescript
---
## Паспорт документа

- Статус документа: living standard
- Актуально на: 28 марта 2026 года
- Владелец: backend/platform-команда
- Пересмотр: при изменении инженерной практики, CI/CD, архитектурных правил или локального workflow
- Область применения: внутренние rule/reference-card документы для инженерной команды
- Связанные документы:
  - [Индекс Agents](../README.md)
  - [Команды разработки](../commands.md)
  - [Инженерные принципы](../../governance/engineering-principles.md)

## Import Patterns and Named Exports

**Impact: MEDIUM**

### Type Imports

Always use `import type` for TypeScript types and interfaces:

```typescript
// Good
import type { Item, Seller } from '@repo/shared';
import type { PrismaService } from '../prisma/prisma.service';

// Bad
import { Item, Seller } from '@repo/shared';
```

### Direct Path Imports

Import from the specific file, not from barrel exports:

```typescript
// Good
import { Header } from '@/widgets/header/ui/Header';
import { CatalogRepository } from './repositories/catalog.repository';

// Bad
import { Header } from '@/widgets/header';
import { CatalogRepository } from '../catalog';
```

### Named Exports Over Default Exports

Prefer named exports for better refactoring support and auto-imports:

```typescript
// Good
export function CourseCard({ item }: CourseCardProps) { ... }
export class CatalogService { ... }

// Bad
export default function CourseCard({ item }: CourseCardProps) { ... }
```

**Exception:** Next.js pages (`page.tsx`) and layouts (`layout.tsx`) require default exports by convention.

### Import Ordering

```typescript
// 1. Node/framework imports
import { Injectable } from '@nestjs/common';

// 2. External packages
import { z } from 'zod';

// 3. Workspace / repo packages
import type { Item } from '@repo/shared';

// 4. Internal imports (relative)
import { CatalogRepository } from './repositories/catalog.repository';
```
