Typoskript re-definition von lokalen Variablen

Gibt es irgendeinen bestimmten Grund, warum der TypeScript-compiler markiert nicht den folgenden Fall als ein Fehler?

myFunction(len: number) {
    var len: number = 5;     //re-definition of local variable (name clash)
}

Anderen:

myFunction() {
    var b: number = a;       //variable a is accessed before it is declared/initialized
    var a: number = 5;
}

Dem ich begegnet bin, die beiden Situationen mindestens zwei mal bei der Konvertierung von Javascript zu TypeScript. Würde gespeichert haben mir Stunden zu Debuggen, wenn der compiler hatte mich gewarnt.

TypeScript 0.9.5

EDIT: Hier ist ein Beispiel für einige ungültige Typoskript, dass der TypeScript-compiler kompiliert, um gültigen Javascript:

class MyClass {
    myFunction(myParam: number) {
        myParam = 'abc';
    }
}

Wenn ich speichern Sie diese in Visual Studio, Typoskript markiert es als Fehler, aber dennoch kompiliert es zu

var MyClass = (function () {
    function MyClass() {
    }
    MyClass.prototype.myFunction = function (myParam) {
        myParam = 'abc';
    };
    return MyClass;
})();

Begegne ich solchen Situationen auf einer täglichen basis.

EDIT 2: Anfrage eingereicht: https://typescript.codeplex.com/workitem/2128

  • TypeScript ist nur eine sehr leichte Art checker auf der Oberseite von JavaScript. Wenn Sie möchten, eine weitere Lage syntax-checker, warum nicht wechseln Sie zu Dart?
  • Der Wechsel zu Dart kann eine option für diejenigen, die nicht wirklich wie Javascript. Ich mag es trotzdem, ich will nur eine leichte Typ-checker, also gehe ich mit TypeScript. Und ich hoffe, dass diese Art checker implementiert Warnungen für re-Definitionen von Variablen.
  • TypeScript wird immer kompilieren zu JavaScript, wenn es keine syntax-Probleme. So, während dein zweites Beispiel ist ein Typ Fehler, es gibt keine Verletzung der ECMA-Spezifikation.
Schreibe einen Kommentar