Есть ли какая-либо конкретная причина, по которой компилятор TypeScript не отмечает следующий случай как ошибку?Перекрестное определение локальных переменных TypeScript
myFunction(len: number) {
var len: number = 5; // re-definition of local variable (name clash)
}
Еще один:
myFunction() {
var b: number = a; // variable a is accessed before it is declared/initialized
var a: number = 5;
}
я столкнулся оба ситуаций, по крайней мере в два раза при преобразовании Javascript для машинописи. Сэкономили бы часы отладки, если бы компилятор предупредил меня.
машинопись 0.9.5
EDIT: Вот пример некоторой недействительной машинописи, что машинопись компилятор компилирует актуальное Javascript:
class MyClass {
myFunction(myParam: number) {
myParam = 'abc';
}
}
Если я сохранить это в Visual Studio, машинопись флаги IT в качестве погрешности, но, тем не менее, скомпилирует его на
var MyClass = (function() {
function MyClass() {
}
MyClass.prototype.myFunction = function (myParam) {
myParam = 'abc';
};
return MyClass;
})();
Я сталкиваюсь с такими ситуациями на ежедневной ba сестренка.
EDIT 2: Запрос подан: https://typescript.codeplex.com/workitem/2128
машинопись только очень легкий тип проверки поставить на вершине JavaScript. Если вы хотите более эффективную проверку синтаксиса, почему бы вам не переключиться на Dart? – SpiderPig
Переключение на Дарт может быть вариантом для тех, кто действительно не любит Javascript. Мне нравится, хотя, я просто хочу легкий тип проверки, поэтому я иду с TypeScript. И я надеюсь, что этот тип checker реализует предупреждения для переопределений переменных. – cheeesus
TypeScript всегда будет скомпилирован для JavaScript, если нет синтаксических проблем. Поэтому, в то время как ваш второй пример - ошибка типа, нет нарушения спецификации ECMA. – thomaux