Florian Rappl. TypeScript

Ähnliche Dokumente
TypeScript JavaScript mit ohne Kopfschmerzen. Veit Weber 3. JUG Saxony Day Radebeul

Überblick. Klassen Optionale Typen DOM. Optionale Parameter Klassen. Einführung. 2 Motivation 3 Werkzeuge 4 Demonstration 5 Dart

Wiederholung aus SWE2

Einstieg in die Informatik mit Java

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Oliver Zeigermann JavaScript für Java-Entwickler

Über mich. Daniel Bälz. Softwareentwickler (inovex GmbH) github.com/dbaelz

Einstieg in die Informatik mit Java

javascript Coding-Guidelines 2. Ausgabe Februar 2015 Der Guideline beschreibt den verwendeten Coding-Stil von javascript als eigene Richtline.

Ursprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java

Cross-Platform Mobile mit.net

Algorithmen und Datenstrukturen

Scala. Abstrakte Elemente. Jevgeni Zelenkov. HM

Frontend-Entwicklung mit JavaScript

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Algorithmen und Datenstrukturen II

TypeScript. Das JavaScript der Zukunft? Trainer, Berater, Entwickler

Einführung in die STL

TypeScript und CoffeeScript

4. Vererbung Die Klasse Object. Die Klasse Object

TypeScript. Tobias Meier, BridgingIT GmbH.

Softwaretechnik WS 16/17. Übungsblatt 01

Enum-Klassen. Softwareentwicklung II (IB) Prof. Dr. Oliver Braun Letzte Änderung: :36. Enum-Klassen 1/12

RO-Tutorien 15 und 16

Modulare Anwendungen und die Lookup API. Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team

Vorstellung e.solutions

IntelliJ IDEA. Gliederung. Was ist IntelliJ IDEA? Lizenzmodell Warum IntelliJ einsetzen? IntelliJ und Eclipse Demo. Blick über den Eclipse-Tellerrand

Guile Die Erweiterungssprache des GNU-Projekts

Tutorium Rechnerorganisation

Modularisierung in Java: Pakete Software Entwicklung 1

Objektorientierte Programmierung Studiengang Medieninformatik

Aktivitäten in C# /.NET umsetzen

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic

Wie ich lernte die API zu lieben. 19. März sic[!]sec GmbH Industriestraße Gröbenzell

Kapitel 5: Interfaces

Coffeescript. Javascript the good parts

Handbuch für die Erweiterbarkeit

Bean-Mapping mit MapStruct

Short Introduction to C# C# (C SHARP) Microsofts Antwort auf Java

Getyptes JavaScript für Java-Entwickler

Tag 8 Repetitorium Informatik (Java)

Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, Schnittstellen und Pakete

2.4 Datenabstraktion und Objektorientierung Datenabstraktion in Programmiersprachen

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Scala. Funktionale (Zustandslose) Objekte

Freie Markierung Die Templating-Engine FreeMarker im Einsatz

cardo 4 Technik Teil II René Neidt, IDU IT+Umwelt GmbH

Praktische Informatik 3: Funktionale Programmierung Vorlesung 13 vom : Scala Eine praktische Einführung

Programmieren 2 Java Überblick

Programmieren in Java -Eingangstest-

Master of Advanced Studies in Software Engineering Java - Advanced Concepts. Musteraufgaben

Grundlagen Internet-Technologien. Clientseitige Web-Programmierung

Interface. So werden Interfaces gemacht

Informatik II (D-ITET) Übungsstunde 6

string: Beispiele: Test, test, `Seitentitel: ${document.title}`

Dominik Helleberg inovex GmbH. Auf Augenhöhe mit Android Studio und Gradle

Einführung in Google Web Toolkit

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen

SQL Developer Unit Tests

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Python zur Lösung von AvA Übung 1 VON MORITZ FEY

Vererbung. CoMa-Übung XI TU Berlin. CoMa-Übung XI (TU Berlin) Vererbung / 47

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Repetitorium Informatik (Java)

II.4.5 Generische Datentypen - 1 -

EINFÜHRUNG IN DIE PROGRAMMIERUNG

CORBA. Systemprogrammierung WS

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Auf einen Blick. 1 Einführung Funktionen und funktionale Aspekte Objektorientierte Programmierung mit JavaScript...

Zustände umsetzen Enumerations (Aufzählungen) Zustandsobjekte

Informatik II Übung 06. Benjamin Hepp 5 April 2017

Java-Schulung Grundlagen

Vortrag SASS Funktionen #ck2016. Was ist SASS?

Software Entwicklung 1

Kapitel 5 Serverseitige Technologien

Dynamische Webseiten mit PHP. Oder: LAMP - The open way

Mobile Anwendungsentwicklung - Überblick über ios & Swift I -

Transkript:

Florian Rappl TypeScript

Profil Freiberuflicher IT-Berater Doktorand Theoretische Physik Microsoft MVP für Visual C# CodeProject MVP

Kurzer Abriss Aufschwung von JS Vielzahl von Bibliotheken / Code Größere Projekte Einsatz erweitert Sprache stagniert

Vorteile Probleme von JS Wenig elementare Typen Ein Problem weniger! Alles vorhanden Speicherverwaltung eingeschränkt Keine Kompilierung Schneller (jit), flexibler Viele Implementierungen Hohe Verbreitung Langsamer Standard Solide Entwicklung

Keep those benefits! aber

Optional Typenüberprüfung Syntaxchecking Modularisierung IntelliSense Sinnvolle Wrapper

TypeScript ends with JS starts with JS

TypeScript JavaScript ist bereits TypeScript Zusätzlich: Optionale Typisierung Modularisierung ES6 Syntax Definitionen TypeScript wird zu JavaScript

Wait a minute X zu JS wurde bereits umgesetzt CoffeeScript Dart PyJS GWT

USP JavaScript wird nicht versteckt Obermenge von ES(6) Inkrementelles einpflegen möglich Cross-Implementation sicher Besseres Tooling

Features Typenannotationen Klassen (inkl. Vererbung) Interfaces + Generics Enumerationen Definitionen + Module Scope Funktionen

var fib = function(n: number): number { n = ~~n; if (n < 1) return 0; else if (n === 1) return 1; else return fib(n - 1) + fib(n - 2); }; var result = fib(12); console.log(result);

TypeScript Compiler Geschrieben in TypeScript Syntaxanalyse + Typüberprüfung Verschiedene ES Targets (3, 5) Optionen für z.b. Module CommonJS AMD

$ tsc hello.ts $ tsc -declaration hello.ts $ tsc --sourcemap hello.ts $ tsc --module amd hello.ts

Definitionen Deklarieren von Funktionalität Einschränken der Verwendbarkeit Hilfestellungen Dokumentation

*.d.ts TypeScript Definition File Nur Kommentare und Definitionen Automatische Erstellung möglich Einbindung als Referenz Wichtige Compiler-Hilfe

Annotationen Möglichkeit für Typüberprüfung Doppelpunkt trennt Name und Typ Automatische Erkennung möglich Größter Vorteil in Funktionen

TypeSystem Elementare Typen: any boolean number string void Arrays, z.b. number[]

Interfaces Benutzerdefiniertes Schema Definiert Schnittstelle Wiederverwendbar Erweiterbar ( merging ) Hybrid (z.b. Funktion + Eigenschaften)

interface Counter { (start: number): string; interval: number; reset(): void; }

Klassen Definition wie in ES6 Modifizierer vorhanden Baut Konstruktorfunktion Vererbung möglich

class Animal { constructor(public name: string) { } move(meters: number) { console.log(this.name + " moved " + meters + "m."); } }

class Snake extends Animal { private length: number; constructor(name: string, len: number) { this.length = len; super(name); } move() { super.move(this.length); } }

Weiteres Enumerationen (nur number) Scope Funktionen Generics

Enumerationen enum Color { Red = 1, Green, Blue }; var c: Color = Color.Green; var f = function(color: Color) { //... };

Fat-Arrow Operator var obj: any = { }; obj.f = function() { console.log(this); }; var _this = this; obj.g = () => { console.log(this); };

Generics function identity<t>(x: T): T { } return x; var num = identity(5); var str = identity('hello'); var obj = identity({ a : 3, b : 9 });

Module Allgemeine Syntax import (verwenden) export (bereitstellen) Volle Compiler Unterstützung Auch erweiterbar

Beispiel import http = require( http ); module Validation { export interface StringValidator { isacceptable(s: string): boolean; } }

IDE Support Online Playground Direkt in Microsofts DIE Eclipse Erweitungen Plugins für viele Editoren

Demos

Unterstützung Visual Studio (2013) Integriert IntelliSense Direkter Build Code Analysis Definitions Brackets Plugin IntelliSense Optionaler Build Definitions

Build Automatisierung Integration vorhanden VS automatisiert Grunt Plugins Node Modules

Demo: gulp.js

Fazit Ideal für größere Projekte Versteckt JS nicht Einfacher Einstieg Gute Verbreitung Mächtiges Tooling

Vielen Dank! @FlorianRappl http://florian-rappl.de https://github.com/florianrappl/mario5ts