Почему следующий фрагмент кода не вызывает никаких ошибок или предупреждений?
{
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
}