Extract<T, U> оставляет из union T только варианты, совместимые с U. Если совпадений нет, результат — never, а не новое значение в union.
Что делает TypeScript utility type Extract? Что произойдёт, если передать значение, которого нет в union?
Extract<T, U> оставляет из union T только варианты, совместимые с U. Если совпадений нет, результат — never, а не новое значение в union.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Extract<T, U> оставляет из union T только варианты, совместимые с U. Если совпадений нет, результат — never, а не новое значение в union.
Например, Extract<'a' | 'b', 'b' | 'c'> равно 'b', а Extract<'a' | 'b', 'c'> равно never. Это операция над типами, не runtime-фильтрация. Присвоение значения переменной типа never вызовет ошибку компиляции; сам Extract с несовпадающим U допустим.