Выбор ответа Senior Задачи на типы обновлено

Как распознать any на уровне типов

Вопрос

Какой тип надёжно возвращает true только для any?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: type IsAny<T = 0 extends 1 & T ? true : false. 1 & T для обычного T это 1 или never, и 0 туда не присваивается.

Варианты ответа

  1. type IsAny<T> = T extends any ? true : false
  2. type IsAny<T> = unknown extends T ? true : false
  3. type IsAny<T> = [T] extends [never] ? true : false
  4. type IsAny<T> = 0 extends 1 & T ? true : falseправильный ответ

Разбор

1 & T для обычного T это 1 или never, и 0 туда не присваивается. Только при T = any пересечение становится any, и проверка истинна. Первый вариант истинен для всего, второй и для unknown, третий проверяет never.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.