Возможно ли в Typescript присвоить тип переменной, значения которой могут быть любым значением из «любого», кроме одного (или любого другого количества). Например:
let variable: NOT<any, 'number'>
Эта переменная может быть абсолютно любого типа, кроме «числа».






В Typescript есть помощник Exclude, который использует условные типы, представленные в v2.8. Exclude<T, U> - это просто T extends U ? never : T, т.е. если val в приведенном ниже примере окажется number, он выйдет из строя из-за типа never, в противном случае типом будет любой тип T:
function test<T>(val: Exclude<T, number>): void {
console.info('not a number!');
}
test('a');
test([1]);
test(1); // fails
Но как я могу присвоить этот тип переменной? Я пробовал использовать Exclude следующим образом:
Exclude<any, number>, но он просто давалanyкак тип.