Как реализовать типобезопасный Builder-паттерн в TypeScript?
- Дженерик-параметр отслеживает установленные поля:
Builder<Set extends string = never> - Каждый
.set()добавляет поле к union:Builder<Set | "name"> .build()доступен только когда все обязательные поля установлены:Set extends RequiredFields- Полиморфный
thisдля fluent API цепочек - Compile-time проверка: забыл поле → ошибка компиляции