Extends ограничивает допустимый generic-аргумент, а знак = задаёт тип по умолчанию, если аргумент не указан или не выведен.
Тип generic по умолчанию: чем знак = отличается от extends
Extends ограничивает допустимый generic-аргумент, а знак = задаёт тип по умолчанию, если аргумент не указан или не выведен.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Extends ограничивает допустимый generic-аргумент, а знак = задаёт тип по умолчанию, если аргумент не указан или не выведен.
Box<T extends {id: string}> требует наличие id. Box<T = {id: string}> допускает иной явно переданный T и сам по себе ничего не ограничивает. Можно совместить: T extends Base = Base. Без исходного типа нельзя описать все последствия замены, но различие ограничения и fallback остаётся ключевым.