Was ist die Motivation hinter TypeScript?

21

Wir hatten JavaScript, dann hatten wir Flash, dann hatten wir Silverlight und HTML5 besaß sie alle.

Welche Motivation steckt hinter TypeScript? Welche Probleme werden angegangen und welche Verbesserungen erzielen wir mit TypeScript?

http://www.typescriptlang.org/

Gero
quelle
15
Warum denken Sie, dass HTML5 JavaScript "besitzt"?
Bergi
1
In dem Sinne, dass jeder einigen Dingen zustimmen musste, um Gemeinsamkeiten zu finden => Technologie und Entwicklung ins Stocken geraten.
Gero
3
Warum hast du Dart erwähnt?
Robert Harvey
Dart, TypeScript oder Coffeescript können in JavaScript kompiliert werden. Und Dart ist auch ziemlich neu.
Gero
Schauen Sie sich diesen Artikel "Thoughts on TypeScript" von Nicholas C. Zakas an: nczonline.net/blog/2012/10/04/thoughts-on-typescript
Czarek Tomczak

Antworten:

35

Mir scheint, es ist eine statisch typisierte, klassenbasierte Sprache, die bis zu JavaScript kompiliert wird. Das ist eine gute Idee, die auch andere gehabt haben.

Die Vorteile sollten jedem klar sein, der sowohl in statisch typisierten, klassenbasierten Sprachen als auch in JavaScript entwickelt wurde:

  • In erster Linie ein Compiler. Es ist für die meisten Entwickler eine Selbstverständlichkeit, vor der Bereitstellung auf offensichtliche Korrektheitsprobleme zu prüfen, die durch Tippfehler oder Unachtsamkeit verursacht werden. Browser sind so konzipiert, dass sie das Surfen auf Kosten ordnungsgemäßer Test- und Debugging-Funktionen angenehm gestalten. Die Standardlösung JSLint ist kein Ersatz für einen echten Compiler, da sie einige offensichtliche Korrektheitsprobleme übersieht und eine Reihe von Style-Checker-Beschwerden enthält mit seinen Berichten. Einen echten Compiler zu haben, ist ein großer Fortschritt.
  • Und in ähnlicher Weise ein Typensystem . Typensysteme verbessern Ihren Code, indem sie das Lesen erleichtern (Sie wissen genau, was in eine Funktion überführt wird und was sie kann, indem Sie sich beispielsweise die Parameterliste ansehen) und beim Kompilieren einen gewissen Grad an Korrektheit erzwingen Zeit. (Wenn Sie einen bestimmten Objekttyp erwarten, ist die Übergabe einer Ganzzahl ein Fehler. Sie können dies in JavaScript ausführen, und der Compiler mit einem Typsystem fängt ihn ab und meldet einen Fehler für Sie.)

Die Grundidee ist also, wie wir sehen, eine sehr gute. Allerdings kann ich nichts über die Sprache selbst sagen, da ich keine Erfahrung damit habe. Aber ich habe Smart verwendet (siehe oben) und fand, dass es ein unglaublich leistungsfähiges und nützliches Werkzeug für die Webentwicklung ist.

Mason Wheeler
quelle
7
Es ist eher eine Obermenge von JavaScript als eine neue Sprache, die sich daraufhin kompilieren lässt.
Daniel Little
2
Ja, starkes Tippen erleichtert Programmierern die Arbeit.
Edwin Yip
13
TypeScript ist statisch und nicht stark typisiert.
Fenton
15

Es gibt ein paar gute Gründe, TypeScript zu verwenden, soweit ich das sehe. In erster Linie, wie Mason Wheeler sagte, ein Compiler . Oder vielmehr die gesamte Prüfung, die ein Compiler durchführt. JSLint und andere Tools sind nützlich, lassen jedoch einige Probleme aus und sind manchmal einfach falsch. Ich begrüße diese "Innovation".

Dann gibt es ein echtes Typensystem , das die Lesbarkeit verbessert und korrekte Typen erzwingt. Immerhin erhöht dies die Entwicklungsgeschwindigkeit.

Für mich ist eines der großen Dinge die Werkzeugunterstützung . Das ist wahrscheinlich ein Nebeneffekt des Typsystems, aber trotzdem großartig. Und wirklich notwendig, da die aktuelle Unterstützung für JavaScript-Tools nicht mehr sinnvoll ist.

TypeScript versucht , JavaScript zu erweitern . Der Compiler generiert wirklich schönes JavaScript. Darüber hinaus folgt es den Vorschlägen von ECMAScript 6 . (Zum Beispiel Pfeilfunktionssyntax , Parameterstandardwerte , Module usw.)

Dies erleichtert die Arbeit mit Modulen und Klassen . Tatsächlich ist es möglich und durchaus üblich, mit Klassen und Modulen in JavaScript zu arbeiten, es ist jedoch eine gewisse Menge an Boilerplate-Code erforderlich. Und es ist nicht leicht zu lesen. TypeScript ermöglicht das Schreiben von Klassen-, Schnittstellen- und Modulanweisungen wie in Java oder C #, was bei mir bei weitem einfacher ist.

Es ist aber immer noch nur JavaScript . Es ist nicht erforderlich, eine neue Sprache oder Syntax zu lernen. Das einzige, was hinzugefügt wird, ist das optionale Typensystem (das großartig und überfällig ist).

Dann gibt es die "Definitionsbibliothek" , was bedeutet, dass ich alle meine JavaScript- Bibliotheken verwenden kann , ohne sie neu zu schreiben oder sogar zu patchen. Allerdings habe ich jetzt das zusätzliche Typensystem.

Ich werde es auf jeden Fall versuchen!

Zum Schluss gibt es keine Konkurrenz zwischen HTML5 und TypeScript. Aber das ist eine andere Geschichte.

Bruno Schäpper
quelle
5

Wir hatten JavaScript, dann hatten wir Flash, dann hatten wir Silverlight und HTML5 besaß sie alle.

Das ist einfach NICHT wahr . Html5 besitzt sie nicht, es führt neue Markups ein, die die Verwendung von Multimedia vereinfachen, und untersucht die Vorteile neuer Browser (wie die Verwendung der Hardwarebeschleunigung beim Rendern von HTML).

Welche Motivation steckt hinter TypeScript?

Die Motivation kann durch Gründe für die Verwendung bestimmt sein. Alle Funktionen von TypeScript, wie die statische Überprüfung, die symbolbasierte Navigation, die Vervollständigung von Anweisungen und das Umgestalten von Code, sind gute Gründe, dies in Betracht zu ziehen.

Darüber hinaus bietet es Klassen, Module und Schnittstellen, mit denen Sie robuste Komponenten erstellen können. Diese Funktionen stehen zur Entwicklungszeit zur Verfügung, um eine zuverlässige Anwendungsentwicklung zu ermöglichen. Sie werden jedoch in einfachem JavaScript kompiliert.

EL Yusubov
quelle
HTML 5 ist keine Voraussetzung für die Hardwarebeschleunigung. Die meisten Browser tun dies mit oder ohne HTML5-Markup
Neil N
Meiner Aussage nach ist die Hardwarebeschleunigung eine Funktion, die der Browser nicht in HTML5 anbietet.
EL Yusubov
3

Es kann als ein Tool zum Verwalten der JavaScript-Entwicklung angesehen werden, anstatt als eine völlig neue Sprache, die mit JS kompiliert wird. Es soll keine serverseitige Entwicklungssprache wie Dart sein und keine andere Syntax wie CoffeeScript haben. Es wollte keine populäre Sprache (und ihre Kernbibliothek) verwenden und sie wie GWT oder script # in JS kompilieren. TypeScript folgt sogar derselben "Klassen" -Syntax, die für die nächste Version von JS vorgeschlagen wurde.

Ich denke, die meisten Webentwicklungen werden heute mit echtem Javascript durchgeführt, nur auf der Client-Seite. Sprachen oder Frameworks wie Dart, GWT sind dafür nicht geeignet. Wenn Sie sich für Coffeescript entscheiden, erscheint eine neue Syntax. Und Sie müssen sowohl coffeescript als auch JS verstehen. Während TypeScript nur ein paar zusätzliche typorientierte Funktionen hinzufügt, die in JS integriert sind, werden Entwickler vor typspezifischen Fehlern (die einen großen Teil der JS-Fehler ausmachen) geschützt und die Entwicklungstools erhalten mehr Informationen über die Entwicklerabsicht.

Dieser Ansatz ist nicht neu. Gehen Sie zum Abschnitt "Static Typing" von

Dieser Artikel richtet sich an Ihre Anfrage: http://www.eweek.com/developer/microsoft-delivers-typescript-a-better-javascript-for-big-apps/

Gulshan
quelle
0

Ich denke, es ist eine Anstrengung, ein geteiltes, unzuverlässiges Stück Mist (Javascript) in eine proprietäre Sprache zu verwandeln, die tatsächlich für umfangreiche Projekte verwendet werden kann.

Es sollte mit GWT verglichen werden, das ähnliche Ziele verfolgt, aber einen saubereren Ansatz verfolgt, indem Javascript nicht Teil der Sprache ist. und mit Java-Applets oder Flash, die den sehr übersichtlichen Ansatz verfolgen, eine vollständige, vom Browser unabhängige Laufzeitumgebung zu definieren.

Ihre Meinung kann variieren, aber ich denke, es ist zum Scheitern verurteilt, solange es von den Browsern abhängt, die die (unterschiedlichen, inkonsistenten) Javascript-Implementierungen und DOM-Modelle nativ bereitstellen.

ddyer
quelle
5
Erstens ist es nicht proprietär, sondern bereits ein offener Standard. Zweitens ähnelt es eher Dart als GWT / ScriptSharp (obwohl ähnlich).
Daniel Little
1
Es gibt wahrscheinlich keine Möglichkeit, dies zu gewinnen - wenn Microsoft es nicht kontrolliert, wird es eine andere bastardisierte Sprache mit vielen Varianten, und es ist immer noch abhängig von der Verschiebung des Sandes von Javascript und DOMs
ddyer
1
Sie klingen wie jemand, der ein bisschen bitter in Bezug auf seine Flash- und / oder Java-Kenntnisse ist und der durch den derzeit populären HTML5 / JS-Stack erheblich an Relevanz verliert.
Graham
3
-1 Sie mögen also kein JavaScript. Das ist im Grunde Ihre Aussage.
Bruno Schäpper
2
Fair, und da es die Grundlage für Typoskript ist, glaube ich, basiert Typoskript auf einer schlechten Grundlage. Es ist nicht unbedingt tödlich, aber es ist eine Welt voller Verletzungen.
Ddyer