Laden...

TypeScript vs JavaScript (Patterns)

Erstellt von Wax vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.786 Views
Wax Themenstarter:in
731 Beiträge seit 2006
vor 7 Jahren
TypeScript vs JavaScript (Patterns)

Hallo zusammen,

ich versuche mich zur Zeit in Sachen Entwicklungstrends im SPA Bereich auf den neusten Stand zu bringen, da ich in naher Zukunft ein Projekt in diesem Bereich beginnen werde.

Nun ist es leider so, dass mich die Fülle an Suchergebnissen erschlägt, wenn ich mich über JavaScript (Patterns) Best Practices, Design, Code Stile, Module usw. informieren möchte.

Für OOP in JavaScript benötigt man zusätzliche Bibliotheken. Um JavaScript Code modularisierbar zu machen, verwendet man anscheinend Bibliotheken wie JSModule oder Node.js oder....

Wir würden gerne während der Entwicklung der Anwendung weiterhin im Visual Studio arbeiten inkl. Typsicherheit durch den Compiler. Deswegen wird überlegt ob TypeScript nicht die richtige Technologie für uns sein könnte.

So wie ich das sehe würden wir mittels TypeScript alle von mir genannten Anforderungen erfüllt bekommen, oder?

  • TypeScript lässt uns weiterhin OO programmieren
  • TypeScript bietet von haus aus modularisierbaren Code, da Namespace Support usw.
  • Typsicherheit durch den Compiler
  • Intellisense

Ist das soweit korrekt oder mache ich mir falsche Hoffnungen? 😉

Gruß,
wax

2.207 Beiträge seit 2011
vor 7 Jahren

Hallo Wax,

das stimmt schon. Intellisense hast du aber bei Javascript im VS auch. Ist halt nicht so gut. 😃

Aber grundsätzlich rate ich (Neu)Kunden nach Möglichkeit Typescript statt plain Javascript zu verwenden. Man muss halt ein wenig Javascript-Hintergrundwissen haben IMHO.

Statt VS würde ich für die clientseitige Entwicklung VSCode in Betracht ziehen.

Gruss

Coffeebean

799 Beiträge seit 2007
vor 7 Jahren

Für OOP in JavaScript benötigt man zusätzliche Bibliotheken.

Nein, das stimmt nicht.

Man muss die Sprache nur richtig verwenden. JS unterstützt prototyp-basiertes OOP. Wenn man so entwickelt ist alles gut. Da es eine dynamische Sprache ist, braucht man sowieso keine Klassen, da Polymorphismus quasi immer unterstützt wird.

JavaScript Code modularisierbar zu machen, verwendet man anscheinend Bibliotheken wie JSModule oder Node.js oder....

Das ist gerade im Umbruch. Node.js (Serverseitige Technologie) unterstützt bereits regulär Module. Allerdings werden die im Gegensatz zu den gängigen Client-seitigen Bibliotheken (SystemJS, RequireJS, AMD) synchron und nicht asynchron geladen.

Wir würden gerne während der Entwicklung der Anwendung weiterhin im Visual Studio arbeiten inkl. Typsicherheit durch den Compiler. Deswegen wird überlegt ob TypeScript nicht die richtige Technologie für uns sein könnte.

Dann ist es sie. Punkt.

Du bekommst:
* Angular 2 für ein SPA Application Framework. Wenn du unbedingt auch React verwenden willst, kannst du das auch in Angular 2 für das View-Rendering.
* Support direkt von MS
* Es ist gekommen um zu bleiben. (Microsoft UND Google setzen darauf)

Aber Achtung: Deine Fragen klingen so als hättest du nicht viel Ahnung davon, wie man JS-Anwendungen am besten strukturiert. Halte dich da am besten an Angular 2. Es bietet dir Module und bindet UI ziemlich performant mit funktionalen Bindings an deine Logik. (FFP => schlägt Watchcycle)

As a man thinketh in his heart, so he is.

  • Jun Fan
    Es gibt nichts Gutes, außer man tut es.
  • Erich Kästner
    Krawutzi-Kaputzi
  • Kasperl
16.835 Beiträge seit 2008
vor 7 Jahren

Aktuell (zumindest großflächig verbreitet) kann JavaScript nur das Prototyping.
Echtes OOP im Sinne von Klassen kommt erst mit EcmaScript 6 - ist trotzdem JavaScript.

TypeScript erzeugt über einen Transcompiler JavaScript.
Das Resultat ist dann kompatibel mit einer der EcmaScript Versionen (ES3, ES4, ES5).

ES6 btw. manchmal auch ES2015 genannt ist - wie im Web das halt so ist - nicht überall gleich gut implementiert.
Siehe http://www.webbrowsercompatibility.com/es6/desktop/ oder auch andere Vergleiche, auffindbar via Google.
Gibt derzeit keinen Browser, der ES6 richtig richtig gut unterstützt. Ist aber halt auch erst ein halbes Jahr alt.

Dementsprechend kommt es dann darauf an, was Du nutzen willst und welche Browser primär wichtig sind.
Daran entscheidet sich dann, welche ES Version für Dich möglich / nötig ist.

Das tolle an TypeScript ist: es ist endlich was vernünftiges (wenn man da noch an Coffeescript denkt), die Sprache ist uns .NETlern sehr Nahe und man muss sich um EcmaScript nicht mehr kümmern.
Die Sorge nimmt der Transcompiler.

Sprich Du hast in TypeScript dann zwar eine Klasse, aber in JavaScript wirds abwärts-kompatibel nen Prototype und in den neueren ES Versionen dann eine Klasse.

Angular 2 funktioniert anders wie Angular 1.
Mit NG2 wurden Komponenten eingeführt, wie man es von HTML5 Web Components kennt und zB auch mit ReactJS verfolgt wird - wird wohl auch die Zukunft sein.

Typsicherheit durch TypeScript ist nicht 100% gewährleistet, weil Du weiterhin auch JavaScript Code schreiben wirst / musst.
Verwendest Du Bibliotheken, die keine Typings kennen, dann kann das TypeScript auch nicht wirklich während der Compile-Zeit überprüfen.

849 Beiträge seit 2006
vor 7 Jahren

Aber man kann sich die Typensicherheit von Javascribt libs (wenn nicht schon auf DefinitelyTyped angeboten) selber mit Definition Files herstellen.