https://github.com/glebmachine/until-destroy
Наброс на управление отписками путем подкапотной магии
https://github.com/glebmachine/until-destroy
angular rxjs unsubscrib
Last synced: about 1 month ago
JSON representation
Наброс на управление отписками путем подкапотной магии
- Host: GitHub
- URL: https://github.com/glebmachine/until-destroy
- Owner: glebmachine
- Created: 2021-01-09T13:04:44.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-05-07T17:56:22.000Z (about 3 years ago)
- Last Synced: 2023-03-22T12:35:35.900Z (about 2 years ago)
- Topics: angular, rxjs, unsubscrib
- Language: TypeScript
- Size: 200 KB
- Stars: 3
- Watchers: 2
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
⚠ Важно, этот наброс еще не обкатан, с осторожностью используйте его в продакшене (а лучше вообще не используйте)!
Не показывайте детям, впечатлительным людям, больным эпилепсией, кормящим матерям и беременным женщинам.# Еще один наброс на автоотписки 😅
`untilDestroyed(this)`- просто бери и пользуйся, никакого бойлерплейта и ограничений 🐱🏍.На самом деле нет, ввиду подкапотной специфики angular'a, с сервисами он требует `UntilDestroy` декоратора, но, опустим эту частность)
## Зачем ты это сделал?
Да, есть минимум пяток хороших реализацией, и еще каждый наворачивает свои собственные. Но, каждая из реализаций говорит: возьми декоратор и\или имплементируй интерфейс, и это вот все еще не безопасно в плане типизации: ты должен держать в голове то, что нужно декоратор поставить, стрим обьявить, дать ему правильный тип (самостоятельно). Если же речь о декораторе на свойстве класса, то тип ты опять же ставишь самостоятельно. Другими словами - много что нужно держать в голове и не ошибаться.Надоело, хочется по-человечески: нужен оператор, использую оператор, все остальное - долнжо как-то само магически отруливаться где-то под капотом. Другими словами - хочу DX, не хочу думать.
## Какие потенциальные проблемы могут возникнуть у тех кто решиться?
Проблемы могут возникнуть при мажорных обновлениях, если команда angular'а решит перелопатить реализацию рендерера (опять, но в этом случае думаю сломается большинство либ, как всегда). Либо, если уберут __ngContext__ у компонента\директивы (у сервиса к примеру они его не подмешивают в экземпляр, и эта та самая причина почему я не могу дотянуться до кишочек и зарегать ngOnDestroy в рантайме для сервиса, как я смог это сделать для компонента)## Какому дизайну ты следовал?
Нет никакого большого дизайна. Есть потребность, _чтобы_работало_, вот оно и работает.## Как ты тестировал?
Автотестами ничего не покрыто. В репе лежит прилага, которая позволяет руками потестить как ведут себя сервисы компоненты и директивы и под капотом есть пару переменных, что содержат статусы. Все тестируется ручкамиЕсли кому-то очень захочется - будут рад если покроете тестами. Тест кейсы описать помогу
## P.S
Либа специально не выложена в npm, а реп тут лежит скорее для того, чтобы продолжать в нем ее разрабатывать.
Когда я пойму что есть потребность и она готова - сделаю пакет