> Какие типы пайпов бывают в Angular и в чем разница между pure и impure пайпами? (Angular)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: LeverX

Стек: Angular

> Пример ответа

В Angular существует два основных типа пайпов: pure (чистые) и impure (нечистые). По умолчанию все встроенные пайпы (например, DatePipe, UpperCasePipe, CurrencyPipe) являются чистыми.

Pure pipe (чистый пайп) - это пайп, который не имеет побочных эффектов и возвращает одинаковый результат для одних и тех же входных данных. Angular пересчитывает чистый пайп только при изменении самого значения (примитива) или ссылки на объект (для объектов и массивов). Это повышает производительность, так как пайп не вызывается при каждой проверке изменений, а только когда реально изменились входные данные.

Impure pipe (нечистый пайп) - вызывается при каждом цикле обнаружения изменений (change detection), независимо от того, изменились ли входные данные. Для создания нечистого пайпа нужно добавить свойство pure: false в декоратор @Pipe.

Пример:

TYPESCRIPT
@Pipe({
name: 'myImpurePipe',
pure: false
})
export class MyImpurePipe implements PipeTransform { ... }

Нечистые пайпы полезны, когда нужно реагировать на изменения внутри объекта или массива (например, фильтрация списка, который может мутировать без изменения ссылки), но их следует использовать с осторожностью из-за потенциальных проблем с производительностью.

Ключевая разница: чистые пайпы оптимизированы и вызываются реже, нечистые - вызываются часто, но позволяют отслеживать внутренние изменения данных.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью