Видеоуроки, интерактивный редактор и сохранение прогресса — бесплатно, сразу после входа.
ВойтиСоздать аккаунт — бесплатноЗакончили урок?
Войдите, чтобы отмечать прогресс
NoInfer<T> ведёт себя как обычный T во всём, кроме одного: из этой позиции TypeScript не берёт кандидатов для вывода. Теперь T выводится только из langs как "ru" | "en", а "de" проверяется против уже готового типа и не проходит.
До TypeScript 5.4 тот же эффект получали трюком со вторым параметром:
Здесь F выводится отдельно и ограничен уже выведенным T. Работает, но читается хуже и добавляет в сигнатуру параметр, который никому снаружи не нужен. Если в проекте старая версия TypeScript, встретить такое можно часто.
Типичные случаи: значение по умолчанию, начальное значение, «выбранный» элемент из списка вариантов.
Правило простое: если аргумент должен подчиняться типу, а не определять его, оборачивай его в NoInfer.