foundation
Services
Держите переиспользуемую бизнес-логику, HTTP, координацию состояния и side effects в injectable services.
Services — injectable классы (`@Injectable`) с переиспользуемой логикой: HTTP, фасады над store, координация фич. Держат components тонкими и тестируемыми.
@Injectable({ providedIn: 'root' })
export class UserApi {
constructor(private http: HttpClient) {}
getUser(id: string) { return this.http.get<User>(`/api/users/${id}`); }
}
`providedIn: 'root'` tree-shake singletons. Feature-scoped providers — экземпляры на lazy-route.
На интервью: service vs state компонента, тесты с mocks, god-service на все фичи.
Типовые ошибки: UI view state в root singleton, HttpClient без маппинга ошибок, циклические зависимости services.
Компромисс: удобные root singletons против скрытого глобального состояния за границами фич.
Чеклист:
- Одна ответственность на service.
- root для app-wide singletons.
- feature providers для изоляции.
- Единообразно Observable или Promise.