Почему следующий фрагмент кода не вызывает ошибок или предупреждений?
{
let x: number;
let y: any;
y = "hello";
x = y;
}
Мои ожидания таковы: что-либо должно быть присвоено y
, поскольку оно явно набирается как any
, но только числа должны быть присвоены x
, поскольку он явно набирается как number
, и если any
необходимо присвоить x
, тогда это должно быть явно приведено к number
:
x = y as number;
Как можно считать текущее поведение приемлемым или, в первую очередь, хорошей идеей, а не ошибкой? Более того, есть ли способ заставить компилятор поднимать вопрос об этом и принимать только явное приведение?
Дополнительная информация:
tsc
версия:3.2.2
- параметры компилятора:
{ "target": "ES5", "noImplicitAny": true, "strictNullChecks": true, "downlevelIteration": true, "experimentalDecorators": true, "strictBindCallApply": true, "strictFunctionTypes": true, "strictPropertyInitialization": true }