TypeScript Версия: 2.0.2.0
код Я знаю, что код немного глуп, но у меня на самом деле есть такие тесты в моем коде (создание посетителя выражения), и я действительно думаю, что они должны летать и компилироваться сразу.
var a: boolean = (true == false);
var b: boolean = (5 == 2);
Вместо этого он жалуется, что равный операнд не может применяться к типам "true", "false", "5" и "2". Отметьте, что они не являются логическими или числовыми, они на самом деле являются типами "истина", "ложь", "5", "2". Я знаю, что типы 'string' и 'boolean' не могут сравниться, но hey, 5 на самом деле число, а не тип '5', или я ошибаюсь?
Это компилируется.
let x = 2;
var a: boolean = 5 == x;
var b: boolean = <number>5 == <number>2;
Я что-то упускаю, почему не 5 и 2 не считают типом числа?
Ожидаемое поведение: Должен компилироваться
Фактическое поведение: Результаты с компиляционной ошибкой: "Операнд" == 'не может применяться к типам "< first argument > "; и '< second argument > '
Фон Я столкнулся с этими проблемами в typescript, определяя, что это должно быть так, но как получилось? https://github.com/Microsoft/TypeScript/issues/6167