Messung des Fortschritts bei der Konvertierung von untypisiertem JavaScript zu TypeScript?
Ok, also ich bin völlig von der Idee von TypeScript überzeugt und möchte es für ein bereits bestehendes Softwareprojekt verwenden. Da TypeScript ein Superset von JavaScript ist, bedeutet das, dass ich damit beginnen kann, alle Dateien umzubenennen, sodass sie die Erweiterung .ts anstelle von .js haben, und dann nach und nach mit der Konvertierung beginnen kann.
Allerdings bin ich nicht allein im Team, also könnte es passieren, dass ich Stück für Stück konvertiere, während andere Entwickler die Codebasis weiterhin mit ungezogenen untypisierten JavaScript in den .ts-Dateien vergrößern.
Dann wäre meine Idee, eine Möglichkeit zu haben, zu messen, wie viel Prozent echten TypeScript (kein JavaScript) ein Projekt hat, um zu vermeiden, dass wir über kontinuierliche Integration (z. B. das Build unterbrechen, wenn der TS-Anteil sinkt) zurückfallen.
Ist das möglich? Kann der TypeScript-Compiler möglicherweise bereits diese Art von Statistiken liefern?
Antwort #1
Also sieht es so aus, als würdest du messen wollen, wie typsicher dein Code ist. Kurze Antwort: Ich kenne keinen einfachen Weg, sag mir Bescheid, wenn du etwas findest :-)
Die Sache ist die, selbst wenn dein JavaScript untypisiert ist, bedeutet das nicht, dass es nicht typgeprüft wird, wenn du es mit TypeScript kompilierst. Der TypeScript-Compiler kann oft Typen für untypisierten JavaScript-Code ableiten:
function f() {
return { a: 'a', b: 1 };
}
var x = f();
var y = x.b;
var z = x.c; // error
y = y + '1'; // error
Es macht das Leben für Entwickler definitiv einfacher, aber es bedeutet, dass es nicht so einfach ist, das zu messen, was man will. Eine Sache, die man tun kann, ist, zu versuchen, das Projekt mit --noImplicitAny zu kompilieren und zu zählen, wie viele Fehler es produziert - das zeigt alle Stellen, an denen der Compiler keinen sinnvollen Typ ableiten konnte und einfach any verwendet hat. Außerdem kann man alle Instanzen erfassen, bei denen etwas mit any deklariert ist, was im Wesentlichen die Typprüfung umgeht, indem man die TSLint-Regel no-any verwendet.
Aber in einem echten Projekt hat man typischerweise auch eine Reihe von Abhängigkeiten, die nicht so strikte Typisierungen haben, entweder aus Notwendigkeit oder einfach weil sie unvollkommen sind. Und ich denke nicht, dass es eine Möglichkeit gibt zu sagen, ob any aufgetaucht ist, weil Ihr Entwickler Code hinzugefügt hat, der nicht typsicher ist, oder weil eine Drittanbieter-Abhängigkeit es so benötigt.
