TypeScript für Fortgeschrittene

Size: px
Start display at page:

Download "TypeScript für Fortgeschrittene"

Transcription

1 TypeScript für Fortgeschrittene Tobias Meier, BridgingIT GmbH

2 Tobias Meier Lead Softwarearchitekt Microsoft Blog: Wir bringen Dinge zusammen Standort Frankfurt Solmsstraße Frankfurt Standort Mannheim N7, Mannheim Standort Stuttgart Marienstraße Stuttgart Standort Nürnberg Königtorgraben Nürnberg Standort Köln Martinstraße Köln Standort Karlsruhe Rüppurrer Straße Karlsruhe Standort München Riesstraße München Standort Zug/Schweiz Baarerstraße 14 CH-6300 Zug Copyright BridgingIT GmbH Autor: Tobias Meier Mai

3 Agenda Status quo, Editor Support Advanced Variables, Interfaces and Classes Advanced Types Async / Await Decorators und Mixins Module Resolution Projektsetup Erste Hilfe

4 Agenda Status quo, Editor Support Advanced Variables, Interfaces and Classes Advanced Types Async / Await Decorators und Mixins Module Resolution Projektsetup Erste Hilfe

5 JavaScript Intellisense Typsicherheit Compiler Refactoring.

6 Warum TypeScript? Great tooling enabled by static types Features from the future today

7 Wie verwendet ihr TypeScript?

8 VSCode AutoImport Debugger for Chrome, Edge TSLint Codelens, Code Metrics Angular Language Service

9 Tooling in VSCode Quick Fixes Autoimport Codelens Code Metrics Angular Language Service

10 Agenda Status quo, Editor Support Advanced Variables, Interfaces and Classes Advanced Types Async / Await Decorators und Mixins Module Resolution Projektsetup Erste Hilfe

11 Aufwärmübung var conference = 'DevDays Magdeburg'; for (var i=2016; i< 2017; i++) { var conference = 'Dev Days Magdeburg ' +i; console.log (conference); console.log (conference);

12 Aufwärmübung 1 var conference = 'DevDays Magdeburg'; for (var i = 2016; i < 2017; i++) { var conference = 'Dev Days Magdeburg ' + i; console.log(conference); console.log(conference);

13 Aufwärmübung 2 let conference = 'DevDays Magdeburg'; for (var i = 2016; i < 2017; i++) { let conference = 'Dev Days Magdeburg ' + i; console.log(conference); console.log(conference);

14 Aufwärmübung 3 const conference = 'DevDays Magdeburg'; for (var i = 2016; i < 2017; i++) { conference = 'Dev Days Magdeburg ' + i; console.log(conference); console.log(conference);

15 Destructuring (1/4) const sessions = ['IOT', 'TypeScript', 'Automatisieren'] const [session1, session2, session3] = sessions; console.log(session1); console.log(session2); console.log(session3);

16 Destructuring (2/4) const sessions = ['IOT', 'TypeScript', 'Automatisieren'] const [session1,...weiteresessions] = sessions; console.log(session1); console.log(weiteresessions.join());

17 Destructuring (3/4) const person = { firstname: 'Tobias', surname: 'Tobias', plz: '70178', city: 'Stuttgart', street: 'Marienstraße 17' ; const { firstname, surname,...address = person; console.log(firstname); console.log(surname); console.log(address.plz); console.log(address.city); console.log(address.street);

18 Destructuring (4/4) const person = { firstname: 'Tobias', surname: 'Tobias', plz: '70178', city:'stuttgart', street:'marienstraße 17' ; const {firstname :vorname, surname:nachname,...address: adresse = person; console.log (vorname); console.log (nachname); console.log(adresse.plz); console.log(adresse.city); console.log(adresse.street);

19 Parameter: Optional, Default, Sonstige function buildaddress(firstname: string, surname?: string,...address: string[]) { let result = surname; if (surname) result = result + ' ' + surname; return result + address.join(' '); console.log(buildaddress( 'Tobias', 'Meier','70178','Stuttgart', 'Marienstr. 17'));

20 Klasse als Interface verwenden class Person{ name: string; interface OnlinePerson extends Person { string; const person: OnlinePerson = {name: 'Meier', 'tobias.meier@bridging-it.de'; console.log (person. );

21 Spread let original = { name: 'Tobias' ; let address = { city: 'Stuttgart' ; let copy = {...original ; let merged = {...original,...address ; let obj = { x: 1, y: "string" ; var newobj = {...obj, z: 3, y: 4 ;

22 Rest let obj = { x: 1, y: 1, z: 1 ; let { z,...obj1 = obj; console.log (obj1.x); console.log (obj1.y);

23 Agenda Status quo, Editor Support Advanced Variables, Interfaces and Classes Advanced Types Async / Await Decorators und Mixins Module Resolution Projektsetup Erste Hilfe

24 Null und undefined function add (zahl1: number, zahl2: number null):number { return zahl1 + (zahl2!= null? zahl2 : 0); tsconfig.json "compileroptions": { "strictnullchecks": true var result = add (1,1); // => 2 var result = add (1,null); // => 1 Nun auch in Angular verwendbar: Angular //Kompilierfehler var result = add (null,1);

25 Intersection Types interface Company { name: string interface Address { street: string, plz: string, city:string type CompanyWithAddress = Company & Address const person : CompanyWithAddress = { name: "BridgingIT GmbH", plz: "70178", city: "Stuttgart", street: "Marienstraße 17" ;

26 Datentypen: Union Types function sum (x: number number[]) { if (typeof x === "number") { return x + 10; else { // return sum of numbers

27 Type Guard typeof function format(obj: string number): string { if (typeof obj === 'number') { return obj.tolocalestring(); return obj; console.log( format("abc") ); console.log( format(10.124));

28 Type Guard instanceof class Person { constructor(public firstname: string, public lastname: string){ class Company { constructor(public companyname: string) { function getname(obj: Person Company): string { if (obj instanceof Person) { return obj.firstname + ' ' + obj.lastname; return obj.companyname;

29 Eigene Type Guards function isperson(obj: Person Company): obj is Person { if (obj instanceof Person) { return true; return false; var obj: Person Company = new Company("BridingIT GmbH"); if (isperson(obj)) { console.info(obj.lastname); else { console.info(obj.companyname);

30 Discriminated Union interface Square { kind: "square"; size: number; interface Rectangle { kind: "rectangle"; width: number; height: number; interface Circle { kind: "circle"; radius: number; type Shape = Square Rectangle Circle; function area(s: Shape) { switch (s.kind) { case "square": return s.size * s.size; case "rectangle": return s.width * s.height; case "circle": return Math.PI *s.radius * s.radius;

31 Fluent API: Polymorphic this class StringBuilder { add (str: string) : this { // return this; class AdvancedStringBuilder extends StringBuilder { appendline () : this { return this; new AdvancedStringBuilder().add('Hello').appendLine();

32 Mapped Types class User { firstname: string; surname: string; interface ReadonlyUser { readonly firstname: string; readonly surname: string; const user = new User(); user.firstname = 'Tobias'; user.surname = 'Meier'; const ruser = <ReadonlyUser> user; ruser.firstname = "tobias";

33 Mapped Types: Readonly class User { firstname: string; surname: string; const user = new User(); user.firstname = 'Tobias'; user.surname = 'Meier'; const ruser = <Readonly<User>> user; ruser.firstname = "tobias";

34 Mapped Types: Partial class User { firstname: string; surname: string; const user : User = {firstname: 'Tobias'; const puser : <Partial<User>> = {firstname: 'Tobias';

35 Und wie lautet der Zaubertrick?

36 Keyof-Operator type Readonly<T> = { readonly [P in keyof T]: T[P]; type Partial<T> = { [P in keyof T]?: T[P];

37 Mapped Types: Record type Person = Record<'firstname' 'surname' ' ', string>; const person1 = <Person> { firstname:"tobias", surname:"meier", "tobias.meier@bridging-it.de" ;

38 Mapped Types: Pick type Person=Record<'firstname' 'surname' ' ',string>; const P1 = <Person> { firstname:"tobias", surname:"meier", "tobias.meier@bridging-it.de" ; type OnlinePerson = Pick<Person, ' '>; const P2 = <OnlinePerson> P1; console.log(p2. );

39 Keyof-Operator Record und Pick type Record<K extends string number, T> = { [P in K]: T; type Pick<T, K extends keyof T> = { [P in K]: T[P];

40 String Literal Types type Direction= "north" "south" "west" "east"; function drive (dir: Direction) { //. drive ('north'); //ok drive ('east'); //ok drive ('n'); //error

41 Type Assertions interface SquareConfig { color?: string; width?: number; function createsquare(config: SquareConfig): { color: string; area: number { return null; let mysquare = createsquare({ colour: "red", width: 100 );

42 Type Assertions interface SquareConfig { color?: string; width?: number; function createsquare(config: SquareConfig): { color: string; area: number { return null; let mysquare = createsquare({ colour: "red", width: 100 as SquareConfig );

43 Type Assertions interface SquareConfig { color?: string; width?: number; [propname: string]: any; function createsquare(config: SquareConfig): { color: string; area: number { //.. let mysquare = createsquare( { colour: "red", width: 100 );

44 Agenda Status quo, Editor Support Advanced Variables, Interfaces and Classes Advanced Types Async / Await Decorators und Mixins Module Resolution Projektsetup Erste Hilfe

45 async / await async function main() { await ping(); async function ping() { for (var i = 0; i < 10; i++) { await delay(300); console.log("ping"); function delay(ms: number) { return new Promise(resolve => settimeout(resolve, ms)); main();

46 Agenda Status quo, Editor Support Advanced Variables, Interfaces and Classes Advanced Types Async / Await Decorators und Mixins Module Resolution Projektsetup Erste Hilfe

47 Decorator Entspricht Attributen in C# Feature muss explizit aktiviert werden: In Angular stark verwendet:

48 Eigener Decorator (1/2) function sealed(constructor: Function) { Object.seal(constructor); Object.seal(constructor.prototype);

49 Eigener Decorator (2/2): function logger(): any { return function (target: any, propertykey: string, descriptor: PropertyDescriptor) { const originalmethod = descriptor.value; descriptor.value = function (...args: any[]) { console.log("called method " + propertykey +" (" + JSON.stringify(args) +")"); const result = originalmethod.apply(this, args); console.log("method " + propertykey +" returns:" + result); return result; ; return descriptor; ; var sb = new StringBuilder(); sb.add('hallo').add(' Magdeburg');

50 Mixins class Person{ ///... export type Constructable = new (...args: any[]) => object; export function Timestamped<BC extends Constructable>(Base: BC) { return class extends Base { timestamp = new Date(); ; const TimestampedPerson= Timestamped(Person); const person1 = new TimestampedPerson(); console.info (person1.timestamp);

51 Agenda Status quo, Editor Support Advanced Variables, Interfaces and Classes Advanced Types Async / Await Decorators und Mixins Module Resolution Projektsetup Erste Hilfe

52 Modulauflösung Angelehnt an NodeJS Tracing : tsconfig.json { "compileroptions": { "moduleresolution": "node", "traceresolution": true

53 Modulauflösung (relativ) File Main.ts: import {Cust from './customer'; File 'C:/Projekte/ET/ts/customer.ts' does not exist. File 'C:/Projekte/ET/ts/customer.tsx' does not exist. File 'C:/Projekte/ET/ts/customer.d.ts' does not exist. Directory 'C:/Projekte/ET/ts/customer' does not exist, skipping all lookups in it. Loading module as file / folder, candidate module location 'C:/Projekte/ET/ts/customer', target file type 'JavaScript'. File 'C:/Projekte/ET/ts/customer.js' does not exist. File 'C:/Projekte/ET/ts/customer.jsx' does not exist. Directory 'C:/Projekte/ET/ts/customer' does not exist, skipping all lookups in it. ======== Module name './customer' was not resolved. ========

54 Modulauflösung (absolut) File Main.ts: import {Cust from 'customer'; File 'C:/Projekte/ET/ts/node_modules/customer.ts' does not exist. File 'C:/Projekte/ET/ts/node_modules/customer.tsx' does not exist. File 'C:/Projekte/ET/ts/node_modules/customer.d.ts' does not exist. Directory does not exist, skipping all lookups in it. Directory 'C:/Projekte/ET/node_modules' does not exist, skipping all lookups in it. Directory 'C:/Projekte/node_modules' does not exist, skipping all lookups in it. Directory 'C:/node_modules' does not exist, skipping all lookups in it. Loading module 'customer' from 'node_modules' folder, target file type 'JavaScript'. File 'C:/Projekte/ET/ts/node_modules/customer.js' does not exist. File 'C:/Projekte/ET/ts/node_modules/customer.jsx' does not exist. Directory 'C:/Projekte/ET/node_modules' does not exist, skipping all lookups in it. Directory 'C:/Projekte/node_modules' does not exist, skipping all lookups in it. Directory 'C:/node_modules' does not exist, skipping all lookups in it. ======== Module name 'customer' was not resolved. ========

55

56 SystemJS: Textdateien importieren 1/2 System.config({ map: { text: 'path/to/text.js' ); import mytext from './mytext.html!text';

57 SystemJS: Textdateien importieren 1/2 tsconfig.json { "compileroptions": { "sourcemap": true, "module": "system", "target": "es5", "strictnullchecks": true, "alwaysstrict": true, "exclude": [ "node_modules", "jspm_packages", "**/*.spec.ts" ] package.json (Ausschnitt) { "jspm": { "dependencies": { "systemjs": "npm:systemjs@^ ", "text": "github:systemjs/plugin-text@^0.0.9", "devdependencies": { "jspm": " "

58 Agenda Status quo, Editor Support Advanced Variables, Interfaces and Classes Advanced Types Async / Await Decorators und Mixins Module Resolution Projektsetup Erste Hilfe

59 TSConfig Meine Empfehlung { "compileroptions": { "target": "es5", "module": "commonjs", "noimplicitthis": false, "strict": true Erzeugbar über: tsc -init Seit TypeScript 2.3

60 Agenda Status quo, Editor Support Advanced Variables, Interfaces and Classes Advanced Types Async / Await Decorators und Mixins Module Resolution Projektsetup Erste Hilfe

61 VS-Code TypeScript-Version: TypeScript-Version: tsc v Suchpfad überprüfen where tsc

62 TypeScript wächst

63 TypeScript für Fortgeschrittene JavaScript that scales Great tooling enabled by static types Features from the future today

64 Vielen Dank Blog: Bilder:

Nick Senger & Jesse van den Kieboom

Nick Senger & Jesse van den Kieboom Using TypeScript with the ArcGIS API for JavaScript Nick Senger & Jesse van den Kieboom Live version of this presentation is available on: https://jkieboom.github.io/devsummit-palm-springs-2018/presentations/typescript-arcgis-js-api

More information

One language to rule them all: TypeScript. Gil Fink CEO and Senior Consultant, sparxys

One language to rule them all: TypeScript. Gil Fink CEO and Senior Consultant, sparxys One language to rule them all: TypeScript Gil Fink CEO and Senior Consultant, sparxys About Me sparxys CEO and Senior consultant Microsoft MVP in the last 8 years Pro Single Page Application Development

More information

Introduction to TypeScript

Introduction to TypeScript AngularJS and TypeScript SPA Development, http://www.iproduct.org/ Introduction to TypeScript e-mail: tiliev@iproduct.org web: http://www.iproduct.org Oracle, Java and JavaScript are trademarks or registered

More information

IN4MATX 133: User Interface Software

IN4MATX 133: User Interface Software IN4MATX 133: User Interface Software Lecture 7: Package Management & TypeScript Professor Daniel A. Epstein TA Jamshir Goorabian TA Simion Padurean 1 A1 Make sure you Push as well as Committing! Need to

More information

An Introduction to TypeScript. Personal Info

An Introduction to TypeScript. Personal Info An Introduction to TypeScript Jason Bock Practice Lead Magenic Level: Beginner/Intermediate Personal Info http://www.magenic.com http://www.jasonbock.net https://www.twitter.com/jasonbock https://www.github.com/jasonbock

More information

TypeScript. Часть II. Старков Дима

TypeScript. Часть II. Старков Дима TypeScript Часть II Старков Дима 1 Сегодня Вывод типов Структурная типизация Более сложные типы Обобщенные типы Type Guards 2 TypeScript? Спасет от выстрелов себе в ногу ESNext прямо сейчас Средство против

More information

3/6/2018 Spectacle PARALLELIZING PRODUCT DEVELOPMENT WITH GRAPHQL.

3/6/2018 Spectacle PARALLELIZING PRODUCT DEVELOPMENT WITH GRAPHQL. @chrisbiscardi PARALLELIZING PRODUCT DEVELOPMENT WITH GRAPHQL http://localhost:3000/#/6?export 1/48 honeycomb.io coffee @chrisbiscardi biscarch CHRISBISCARDI http://localhost:3000/#/6?export 2/48 APPLICATION

More information

JSON Evaluation. User Store

JSON Evaluation. User Store Overview Demo following technologies: JSON Node Package Manager npm Node modules. Very brief introduction to asynchronous programming using async and await. Mongo db JSON JavaScript Object Notation. Inductive

More information

MAKE NODEJS APIs GREAT WITH TYPESCRIPT

MAKE NODEJS APIs GREAT WITH TYPESCRIPT MAKE NODEJS APIs GREAT WITH TYPESCRIPT ABOUT ME I really like my work, software engineering never makes me bored, always keeps in learning and improving mood. dmytro.zharkov@gmail.com http://bit.ly/2fam3lr

More information

Angular 2: What s new? Jonas Bandi, IvoryCode GmbH

Angular 2: What s new? Jonas Bandi, IvoryCode GmbH Angular 2: What s new? Jonas Bandi, IvoryCode GmbH Once upon a time the world was peacefully creating applications with AngularJS but change was lurking in the maze of a mailing list https://groups.google.com/forum/#!search/misko$20hevery$20may$2022$202013/polymer-dev/4rsyakmbtek/uyny3900wpij

More information

Lab 1 - Introduction to Angular

Lab 1 - Introduction to Angular Lab 1 - Introduction to Angular In this lab we will build a Hello World style Angular component. The key focus is to learn how to install all the required code and use them from the browser. We wont get

More information

ECMAScript oder? - das ist hier die Frage - Version: 1.3. Orientation in Objects GmbH. Weinheimer Str Mannheim.

ECMAScript oder? - das ist hier die Frage - Version: 1.3. Orientation in Objects GmbH. Weinheimer Str Mannheim. ECMAScript oder? - das ist hier die Frage - Version: 1.3 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Ihr Sprecher Thorsten Maier Trainer, Berater, Entwickler @ThorstenMaier

More information

Introduction to the SharePoint Framework Bob German Principal Architect - BlueMetal. An Insight company

Introduction to the SharePoint Framework Bob German Principal Architect - BlueMetal. An Insight company Introduction to the SharePoint Framework Bob German Principal Architect - BlueMetal An Insight company Bob German Bob is a Principal Architect at BlueMetal, where he leads Office 365 and SharePoint development

More information

Midterm Exam. 5. What is the character - (minus) used for in JavaScript? Give as many answers as you can.

Midterm Exam. 5. What is the character - (minus) used for in JavaScript? Give as many answers as you can. First Name Last Name CSCi 90.3 March 23, 2010 Midterm Exam Instructions: For multiple choice questions, circle the letter of the one best choice unless the question explicitly states that it might have

More information

excalibur Documentation

excalibur Documentation excalibur Documentation Release Erik Onarheim, Josh Edeen, Kamran Ayub Aug 12, 2017 User Documentation 1 Installing Excalibur.js 3 1.1 Getting Excalibur............................................. 3

More information

TypeScript. Jonathan Kula 12/3/2018

TypeScript. Jonathan Kula 12/3/2018 TypeScript Jonathan Kula 12/3/2018 Introducing TypeScript A superset of JavaScript. This means that all JavaScript code is valid TypeScript code! TypeScript just adds some new features that will make your

More information

Advanced React JS + Redux Development

Advanced React JS + Redux Development Advanced React JS + Redux Development Course code: IJ - 27 Course domain: Software Engineering Number of modules: 1 Duration of the course: 40 astr. hours / 54 study 1 hours Sofia, 2016 Copyright 2003-2016

More information

Chapter 1 - Development Setup of Angular

Chapter 1 - Development Setup of Angular Chapter 1 - Development Setup of Angular Objectives Key objectives of this chapter Angular Files and Dependencies Node.js Node package manager (npm) package.json Semantic version numbers Installing Angular

More information

EIN. Java Forum Stuttgart Dominik Schadow bridgingit

EIN. Java Forum Stuttgart Dominik Schadow bridgingit EIN VAULT FÜRALLE FÄLLE Java Forum Stuttgart 2018 Dominik Schadow bridgingit spring: datasource: name: mydatabase username: mydatabaseuser password: mysupersecretdatabasepassword management: context-path:

More information

npm install [<name> [<name>...]] [--save --save-dev --save-optional]

npm install [<name> [<name>...]] [--save --save-dev --save-optional] Node Package Manager by Jesse Warden http://www.jessewarden.com v1 npm ls Everything you have installed in the current directory. npm search [search terms] Search the registry for packages matching the

More information

CREATING APPS WITH UI5

CREATING APPS WITH UI5 CREATING APPS WITH UI5 Me Tobias Hofmann Senior Consultant PROFILE Fiori Cloud CONTACT Twitter: @tobiashofmann E-Mail: tobias.hofmann@bridging-it.de Portal Mobile Architect & Developer BridgingIT GmbH

More information

JavaScript. History. Adding JavaScript to a page. CS144: Web Applications

JavaScript. History. Adding JavaScript to a page. CS144: Web Applications JavaScript Started as a simple script in a Web page that is interpreted and run by the browser Supported by most modern browsers Allows dynamic update of a web page More generally, allows running an arbitrary

More information

The Basics of Visual Studio Code

The Basics of Visual Studio Code / VS Code 0.9.1 is available. Check out the new features /updates and update /docs/howtoupdate it now. TOPICS The Basics Tweet 16 Like 16 Edit in GitHub https://github.com/microsoft/vscode docs/blob/master/docs/editor/codebasics.md

More information

The course is supplemented by numerous hands-on labs that help attendees reinforce their theoretical knowledge of the learned material.

The course is supplemented by numerous hands-on labs that help attendees reinforce their theoretical knowledge of the learned material. Lincoln Land Community College Capital City Training Center 130 West Mason Springfield, IL 62702 217-782-7436 www.llcc.edu/cctc WA2442 Introduction to JavaScript Objectives This intensive training course

More information

TypeScript. TypeScript. RxJS

TypeScript. TypeScript. RxJS Web 2017.08 About Me TypeScript TypeScript RxJS 2014 X 4 0 Mac/Windows Native UI Web Angular React JavaScript IM User DING Contact RPC Native Nw.js C++ Cef 2014 10 Web 11 nw.js Web App IM DING DING ->

More information

JavaScript Lecture 2

JavaScript Lecture 2 JavaScript Lecture 2 Waterford Institute of Technology May 5, 2016 John Fitzgerald Waterford Institute of Technology, JavaScriptLecture 2 1/28 JavaScript Introduction Topics discussed this presentation

More information

Custom Types. Outline. COMP105 Lecture 19. Today Creating our own types The type keyword The data keyword Records

Custom Types. Outline. COMP105 Lecture 19. Today Creating our own types The type keyword The data keyword Records Outline COMP105 Lecture 19 Custom Types Today Creating our own types The type keyword The data keyword Records Relevant book chapters Programming In Haskell Chapter 8 Learn You a Haskell Chapter 8 The

More information

JScript Reference. Contents

JScript Reference. Contents JScript Reference Contents Exploring the JScript Language JScript Example Altium Designer and Borland Delphi Run Time Libraries Server Processes JScript Source Files PRJSCR, JS and DFM files About JScript

More information

Node.js. Node.js Overview. CS144: Web Applications

Node.js. Node.js Overview. CS144: Web Applications Node.js Node.js Overview JavaScript runtime environment based on Chrome V8 JavaScript engine Allows JavaScript to run on any computer JavaScript everywhere! On browsers and servers! Intended to run directly

More information

What is Node.js? Tim Davis Director, The Turtle Partnership Ltd

What is Node.js? Tim Davis Director, The Turtle Partnership Ltd What is Node.js? Tim Davis Director, The Turtle Partnership Ltd About me Co-founder of The Turtle Partnership Working with Notes and Domino for over 20 years Working with JavaScript technologies and frameworks

More information

TypeScript. Types. CS144: Web Applications

TypeScript. Types. CS144: Web Applications TypeScript Superset of JavaScript (a.k.a. JavaScript++) to make it easier to program for largescale JavaScript projects New features: types, interfaces, decorators,... All additional TypeScript features

More information

IAT 355 : Lab 01. Web Basics

IAT 355 : Lab 01. Web Basics IAT 355 : Lab 01 Web Basics Overview HTML CSS Javascript HTML & Graphics HTML - the language for the content of a webpage a Web Page put css rules here

More information

ECMAScript 2015 The Future of JavaScript is Now!

ECMAScript 2015 The Future of JavaScript is Now! ECMAScript 2015 The Future of JavaScript is Now! Tom Van Cutsem SPLASH-I 2015 @tvcutsem Talk Outline Part I: JavaScript s origins, and the long road to ECMAScript 6 Part II: a brief tour of ECMAScript

More information

JavaScript. History. Adding JavaScript to a page. CS144: Web Applications

JavaScript. History. Adding JavaScript to a page. CS144: Web Applications JavaScript Started as a simple script in a Web page that is interpreted and run by the browser Supported by most modern browsers Allows dynamic update of a web page More generally, allows running an arbitrary

More information

Angular 2 Programming

Angular 2 Programming Course Overview Angular 2 is the next iteration of the AngularJS framework. It promises better performance. It uses TypeScript programming language for type safe programming. Overall you should see better

More information

Inductive Data Types

Inductive Data Types Inductive Data Types Lars-Henrik Eriksson Functional Programming 1 Original slides by Tjark Weber Lars-Henrik Eriksson (UU) Inductive Data Types 1 / 42 Inductive Data Types Today Today New names for old

More information

Data Types and the main Function

Data Types and the main Function COMP101 - UNC Data Types and the main Function Lecture 03 Announcements PS0 Card for Someone Special Released TODAY, due next Wednesday 9/5 Office Hours If your software has issues today, come to office

More information

Variables and Typing

Variables and Typing Variables and Typing Christopher M. Harden Contents 1 The basic workflow 2 2 Variables 3 2.1 Declaring a variable........................ 3 2.2 Assigning to a variable...................... 4 2.3 Other

More information

COMP200 INHERITANCE. OOP using Java, from slides by Shayan Javed

COMP200 INHERITANCE. OOP using Java, from slides by Shayan Javed 1 1 COMP200 INHERITANCE OOP using Java, from slides by Shayan Javed 2 Inheritance Derive new classes (subclass) from existing ones (superclass). Only the Object class (java.lang) has no superclass Every

More information

Quick Desktop Application Development Using Electron

Quick Desktop Application Development Using Electron Quick Desktop Application Development Using Electron Copyright Blurb All rights reserved. No part of this book may be reproduced in any form or by any electronic or mechanical means including information

More information

Full Stack boot camp

Full Stack boot camp Name Full Stack boot camp Duration (Hours) JavaScript Programming 56 Git 8 Front End Development Basics 24 Typescript 8 React Basics 40 E2E Testing 8 Build & Setup 8 Advanced JavaScript 48 NodeJS 24 Building

More information

COMP200 ABSTRACT CLASSES. OOP using Java, from slides by Shayan Javed

COMP200 ABSTRACT CLASSES. OOP using Java, from slides by Shayan Javed 1 1 COMP200 ABSTRACT CLASSES OOP using Java, from slides by Shayan Javed Abstract Classes 2 3 From the previous lecture: public class GeometricObject { protected String Color; protected String name; protected

More information

Frontend UI Training. Whats App :

Frontend UI Training. Whats App : Frontend UI Training Whats App : + 916 667 2961 trainer.subbu@gmail.com What Includes? 1. HTML 5 2. CSS 3 3. SASS 4. JavaScript 5. ES 6/7 6. jquery 7. Bootstrap 8. AJAX / JSON 9. Angular JS 1x 10. Node

More information

Catbook Workshop: Intro to NodeJS. Monde Duinkharjav

Catbook Workshop: Intro to NodeJS. Monde Duinkharjav Catbook Workshop: Intro to NodeJS Monde Duinkharjav What is NodeJS? NodeJS is... A Javascript RUNTIME ENGINE NOT a framework NOT Javascript nor a JS package It is a method for running your code in Javascript.

More information

webpack bundle inner structure and optimization Alexey Ivanov, Evil Martians

webpack bundle inner structure and optimization Alexey Ivanov, Evil Martians webpack bundle inner structure and optimization Alexey Ivanov, Evil Martians Evil Martians Evil Martians What I'm working on Problems Multiple versions of lodash or underscore. Problems Multiple versions

More information

Classes vs Simple Object Delegation In JavaScript

Classes vs Simple Object Delegation In JavaScript Classes vs Simple Object Delegation In JavaScript Things to consider... Do we want to (deeply) understand what our code is doing? Do we want encapsulation? Do we want true private variables and functions?

More information

Decorators. Userland Extensions to ES6 Classes

Decorators. Userland Extensions to ES6 Classes Decorators Userland Extensions to ES6 Classes Userland Classes Class.new({ init: function(firstname, lastname) { this.firstname = firstname; this.lastname = lastname; this._super();, fullname: function()

More information

Timo Korinth MAXIMAGO. Flexbox CSS Layouting der Zukunft

Timo Korinth MAXIMAGO. Flexbox CSS Layouting der Zukunft Timo Korinth MAXIMAGO Flexbox CSS Layouting der Zukunft Special Day Modern Business Applications Thema Sprecher Datum, Uhrzeit Raum TypeScript für.net-entwickler Christian Wenz DI, 20. September 2016,

More information

Building Your own Widget with ArcGIS API for JavaScript

Building Your own Widget with ArcGIS API for JavaScript Building Your own Widget with ArcGIS API for JavaScript Matt Driscoll @driskull JC Franco @arfncode Agenda About Widgets Prerequisites Widget framework Theming DO IT! Tips & tricks About Widgets What?

More information

Principles of Programming Languages

Principles of Programming Languages Principles of Programming Languages www.cs.bgu.ac.il/~ppl172 Collaboration and Management Dana Fisman Lesson 2 - Types with TypeScript 1 Types What are types in programming languages? What types are you

More information

Secrets in the Cloud JAX Dominik Schadow

Secrets in the Cloud JAX Dominik Schadow Secrets in the Cloud JAX 2017 Dominik Schadow bridgingit spring: datasource: username: mydatabaseuser password: mysupersecretdatabasepassword ID USERNAME PASSWORD SECRET_ID SECRET_DATA kvgkiu7zupidk9g7wua

More information

FRONT END WEB. {< Course Details >}

FRONT END WEB. {< Course Details >} FRONT END WEB {< Course Details >} centers@acadgild.com www.acadgild.com 90360 10796 css { } HTML JS { ; } centers@acadgild.com www.acadgild.com 90360 10796 Brief About the Course Our Front end development

More information

Chapter 23. Inheritance and Polymorphism

Chapter 23. Inheritance and Polymorphism B B Chapter 23 Inheritance and Polymorphism 533 This chapter describes six levels of abstraction. Data abstraction, encompassing Type abstraction, and Structure abstraction Control abstraction, encompassing

More information

Arjen de Blok. Senior Technical Consultant bij ICT Groep ( sinds 1995 Programmeren sinds 1990 Technologiën. Links

Arjen de Blok. Senior Technical Consultant bij ICT Groep (  sinds 1995 Programmeren sinds 1990 Technologiën. Links Arjen de Blok Senior Technical Consultant bij ICT Groep (www.ict.eu) sinds 1995 Programmeren sinds 1990 Technologiën Links Visual C++ met Microsoft Foundation Classes.NET WinForms & WPF Silverlight ASP.NET

More information

Introduction to. Angular. Prof. Dr.-Ing. Thomas Wiedemann.

Introduction to. Angular. Prof. Dr.-Ing. Thomas Wiedemann. EwA - Web based systems Introduction to Angular Prof. Dr.-Ing. Thomas Wiedemann email: wiedem@informatik.htw-dresden.de HOCHSCHULE FÜR TECHNIK UND WIRTSCHAFT DRESDEN (FH) Fachbereich Informatik/Mathematik

More information

FlowCAD. FlowCAD Webinar. OrCAD / Allegro PCB Editor Trucs et astuces November 2012

FlowCAD. FlowCAD Webinar. OrCAD / Allegro PCB Editor Trucs et astuces November 2012 FlowCAD Webinar OrCAD / Allegro PCB Editor Trucs et astuces 8. November 2012 Print Screen from the Canvas Open Windows Explorer with the working folder Z-Copy: Copy a Shape to another Layer Z-Copy: Copy

More information

Sebastiano

Sebastiano Sebastiano Armeli @sebarmeli http://html5hub.com/wp-content/uploads/2013/11/es6-hiway-sign.png Sebastiano Armeli @sebarmeli ES6 History 199 199 199 199 199 200 200 5 6 7 8 9 0 3 JSScript ECMA-262 Ed.2

More information

Brunch Documentation. Release Brunch team

Brunch Documentation. Release Brunch team Brunch Documentation Release 1.2.2 Brunch team June 22, 2012 CONTENTS i ii Contents: CONTENTS 1 2 CONTENTS CHAPTER ONE FAQ 1.1 I want to start new project with Brunch. What s the workflow? Create new

More information

WebStorm, intelligent IDE for JavaScript development

WebStorm, intelligent IDE for JavaScript development , intelligent IDE for JavaScript development JetBrains is a powerful Integrated development environment (IDE) built specifically for JavaScript developers. How does match up against competing tools? Product

More information

Course Outline. ProTech Professional Technical Services, Inc. Comprehensive Angular 7 Course Summary. Description

Course Outline. ProTech Professional Technical Services, Inc. Comprehensive Angular 7 Course Summary. Description Course Summary Description Use Angular 7 to easily build web applications that interacts with the user by dynamically rewriting the current page rather than loading entire new pages from a server. Learn

More information

iwiki Documentation Release 1.0 jch

iwiki Documentation Release 1.0 jch iwiki Documentation Release 1.0 jch January 31, 2014 Contents i ii Contents: Contents 1 2 Contents CHAPTER 1 Python 1.1 Python Core 1.1.1 Strings 1.1.2 Functions Argument Lists *args tuple/list **kwargs

More information

C # 7, 8, and beyond: language features from design to release to IDE support. Kevin

C # 7, 8, and beyond: language features from design to release to IDE support. Kevin C # 7, 8, and beyond: language features from design to release to IDE support Kevin Pilch kevinpi@microsoft.com @Pilchie Stack Overflow - most popular technologies http://stackoverflow.com/insights/survey/2017#most-popular-technologies

More information

Symbols. accessor properties, attributes, creating, adding properties, 8 anonymous functions, 20, 80

Symbols. accessor properties, attributes, creating, adding properties, 8 anonymous functions, 20, 80 Index Symbols { } (braces) for function contents, 18 and object properties, 9 == (double equals operator), 5 === (triple equals operator), 5 [ ] (square brackets) for array literals, 10 for property access,

More information

Node.js Training JavaScript. Richard richardrodger.com

Node.js Training JavaScript. Richard richardrodger.com Node.js Training JavaScript Richard Rodger @rjrodger richardrodger.com richard.rodger@nearform.com A New Look at JavaScript Embracing JavaScript JavaScript Data Structures JavaScript Functions Functional

More information

ASSIGNMENT 3 Classes, Objects and the Robot World

ASSIGNMENT 3 Classes, Objects and the Robot World ASSIGNMENT 3 Classes, Objects and the Robot World COMP-202B, Winter 2009, All Sections Due: Tuesday, March 3, 2009 (23:55) You MUST do this assignment individually and, unless otherwise specified, you

More information

Bedienungsanleitung / Handbuch / Datenblatt

Bedienungsanleitung / Handbuch / Datenblatt Bedienungsanleitung / Handbuch / Datenblatt Sie benötigen einen Reparaturservice für Ihren Etikettendrucker oder suchen eine leicht zu bedienende Etikettensoftware? Wir helfen Ihnen gerne weiter. Ihr Partner

More information

Multimedia-Programmierung Übung 7

Multimedia-Programmierung Übung 7 Multimedia-Programmierung Übung 7 Ludwig-Maximilians-Universität München Sommersemester 2009 Ludwig-Maximilians-Universität München Multimedia-Programmierung 7-1 Today Introduction to No more Python :ʼ-(

More information

Sicherheit beim Build

Sicherheit beim Build Sicherheit beim Build Java Forum Stuttgart 2017 Dominik Schadow bridgingit Verify your security activities Integration into the build pipeline Find security issues as early as possible Catch the low hanging

More information

JavaScript Programming

JavaScript Programming JavaScript Programming Mendel Rosenblum 1 How do you program in JavaScript? From Wikipedia:... supporting object-oriented, imperative, and functional programming... Mostly programming conventions (i.e.

More information

Advanced Clojure Microservices. Tobias Bayer Hamburg,

Advanced Clojure Microservices. Tobias Bayer Hamburg, Advanced Clojure Microservices Tobias Bayer Hamburg, 30.09.2016 Tobias Bayer Senior Developer / Software Architect inovex GmbH Clojure, Java, Cloud tobias.bayer@inovex.de https://github.com/tobiasbayer

More information

Automate with Grunt. Extracted from: The Build Tool for JavaScript. The Pragmatic Bookshelf

Automate with Grunt. Extracted from: The Build Tool for JavaScript. The Pragmatic Bookshelf Extracted from: Automate with Grunt The Build Tool for JavaScript This PDF file contains pages extracted from Automate with Grunt, published by the Pragmatic Bookshelf. For more information or to purchase

More information

TypeScript. Language Specification. Version 1.8

TypeScript. Language Specification. Version 1.8 TypeScript Language Specification Version 1.8 January, 2016 Microsoft is making this Specification available under the Open Web Foundation Final Specification Agreement Version 1.0 ("OWF 1.0") as of October

More information

Node.js 8 the Right Way

Node.js 8 the Right Way Extracted from: Node.js 8 the Right Way Practical, Server-Side JavaScript That Scales This PDF file contains pages extracted from Node.js 8 the Right Way, published by the Pragmatic Bookshelf. For more

More information

Deep Dive on How ArcGIS API for JavaScript Widgets Were Built

Deep Dive on How ArcGIS API for JavaScript Widgets Were Built Deep Dive on How ArcGIS API for JavaScript Widgets Were Built Matt Driscoll @driskull JC Franco @arfncode Agenda Prerequisites How we got here Our development lifecycle Widget development tips Tools we

More information

INF3110 Programming Languages Types, Subtyping and Object Orientation

INF3110 Programming Languages Types, Subtyping and Object Orientation INF3110 Programming Languages Types, Subtyping and Object Orientation 8/28/17 1 Object orientation and types Lecture I (today) Lecture II What is a type and why should we care? From predefined (simple)

More information

JavaScript: the language of browser interactions. Claudia Hauff TI1506: Web and Database Technology

JavaScript: the language of browser interactions. Claudia Hauff TI1506: Web and Database Technology JavaScript: the language of browser interactions Claudia Hauff TI1506: Web and Database Technology ti1506-ewi@tudelft.nl Densest Web lecture of this course. Coding takes time. Be friendly with Codecademy

More information

PSADK THE POWERSHELL APP DEPLOYMENT TOOLKIT

PSADK THE POWERSHELL APP DEPLOYMENT TOOLKIT PSADK THE POWERSHELL APP DEPLOYMENT TOOLKIT SINISA SOKOLIC CHIEF INFORMATION OFFICER Citrix XenApp und XenDesktop SCCM Automation 17 years in the field AGENDA Wrappers Packaging PowerShell PSADK SCCM WRAPPERS

More information

TypeScript coding JavaScript without the pain

TypeScript coding JavaScript without the pain TypeScript coding JavaScript without the pain @Sander_Mak Luminis Technologies INTRO @Sander_Mak: Senior Software Engineer at Author: Dutch Java Magazine blog @ branchandbound.net Speaker: AGENDA Why TypeScript?

More information

Sichere Webanwendungen mit Java

Sichere Webanwendungen mit Java Sichere Webanwendungen mit Java Karlsruher IT- Sicherheitsinitiative 16.07.2015 Dominik Schadow bridgingit Patch fast Unsafe platform unsafe web application Now lets have a look at the developers OWASP

More information

DECOUPLING PATTERNS, SERVICES AND CREATING AN ENTERPRISE LEVEL EDITORIAL EXPERIENCE

DECOUPLING PATTERNS, SERVICES AND CREATING AN ENTERPRISE LEVEL EDITORIAL EXPERIENCE DECOUPLING PATTERNS, SERVICES AND CREATING AN ENTERPRISE LEVEL EDITORIAL EXPERIENCE Who we are and Why we are here? Saurabh Chugh Started Drupal journey in 2010 with Drupal 6, long journey with Drupal

More information

Extensible Java Pre-processor

Extensible Java Pre-processor Extensible Java Pre-processor National Institute of Advanced Industrial Science and Technology(AIST) Yuuji Ichisugi http://staff.aist.go.jp/y-ichisugi/ 2002/12/17 1 What is EPP? Language extension framework

More information

Stencil: The Time for Vanilla Web Components has Arrived

Stencil: The Time for Vanilla Web Components has Arrived Stencil: The Time for Vanilla Web Components has Arrived Gil Fink sparxys CEO @gilfink / www.gilfink.net Typical Application Web Page Design From Design to Implementation Session List Day tabs Component

More information

JavaScript. Training Offer for JavaScript Introduction JavaScript. JavaScript Objects

JavaScript. Training Offer for JavaScript Introduction JavaScript. JavaScript Objects JavaScript CAC Noida is an ISO 9001:2015 certified training center with professional experience that dates back to 2005. The vision is to provide professional education merging corporate culture globally

More information

GitHub code samples. Appendix B

GitHub code samples. Appendix B Appendix B GitHub code samples The vast majority of the code samples in this book were taken from Microsoft Visual Studio 2013 solutions. Although not all of them are directly runnable, they can all be

More information

LEARN WITH INTRODUCTION TO TYPESCRIPT

LEARN WITH INTRODUCTION TO TYPESCRIPT LEARN WITH INTRODUCTION TO TYPESCRIPT By Jeffry Houser http://www.learn-with.com http://www.jeffryhouser.com https://www.dot-com-it.com Copyright 2017 by DotComIt, LLC Contents Title Page... 2 Introduction

More information

Data Visualization (DSC 530/CIS )

Data Visualization (DSC 530/CIS ) Data Visualization (DSC 530/CIS 602-02) Web Programming Dr. David Koop 2 What languages do we use on the Web? 3 Languages of the Web HTML CSS SVG JavaScript - Versions of Javascript: ES6, ES2015, ES2017

More information

Automating developer tasks with custom SQLcl scripts. APEX Connect 2017 Berlin,

Automating developer tasks with custom SQLcl scripts. APEX Connect 2017 Berlin, Automating developer tasks with custom SQLcl scripts APEX Connect 2017 Berlin, 2017-05-11 @mennooo About me mennooo Menno Hoogendijk Fulltime APEX developer Working with Oracle since 2008 Tries to be a

More information

Introduction to Ceylon. Stéphane Épardaud Red Hat

Introduction to Ceylon. Stéphane Épardaud Red Hat Introduction to Ceylon Stéphane Épardaud Red Hat Executive summary What is Ceylon Why Ceylon Features and feel Demo The community Status 2 About Stéphane Épardaud Open-Source projects RESTEasy, Ceylon

More information

French-Australian Regional Informatics Olympiad Thursday 9th March, 2017

French-Australian Regional Informatics Olympiad Thursday 9th March, 2017 French-Australian Regional Informatics Olympiad Thursday 9th March, 2017 Duration: 4 hours 3 questions All questions should be attempted FARIO 2017 Pair Programming Problem 1 Pair Programming Input File:

More information

Quick Review of Object-Oriented Programming in Go

Quick Review of Object-Oriented Programming in Go Quick Review of Object-Oriented Programming in Go 02-201 Structs: Grouping Variables as Objects type Rectangle struct { x1 float64 y1 float64 width float64 height float64 type Circle struct { x1 float64

More information

Esprima. Release master

Esprima. Release master Esprima Release master Apr 15, 2018 Contents 1 Chapter 1. Getting Started 1 1.1 Supported environments......................................... 1 1.2 Using Node.js to play with Esprima...................................

More information

create 2 new grid lines

create 2 new grid lines STEP 1: open your class-01 Project file _ go to Level 1 _ select grid line 1 _ type CO (copy) _ repeat for grid line 3 as shown in image 1 Architectural Column STEP 2: from the Ribbon under the Home tab

More information

Practical Node.js. Building Real-World Scalable Web Apps. Apress* Azat Mardan

Practical Node.js. Building Real-World Scalable Web Apps. Apress* Azat Mardan Practical Node.js Building Real-World Scalable Web Apps Azat Mardan Apress* Contents About the Author About the Technical Reviewer Acknowledgments Introduction xv xvii xix xxi Chapter 1: Setting up Node.js

More information

Pointers, Dynamic Data, and Reference Types

Pointers, Dynamic Data, and Reference Types Pointers, Dynamic Data, and Reference Types Review on Pointers Reference Variables Dynamic Memory Allocation The new operator The delete operator Dynamic Memory Allocation for Arrays 1 C++ Data Types simple

More information

UNIT -II. Language-History and Versions Introduction JavaScript in Perspective-

UNIT -II. Language-History and Versions Introduction JavaScript in Perspective- UNIT -II Style Sheets: CSS-Introduction to Cascading Style Sheets-Features- Core Syntax-Style Sheets and HTML Style Rle Cascading and Inheritance-Text Properties-Box Model Normal Flow Box Layout- Beyond

More information

Topic 7: Algebraic Data Types

Topic 7: Algebraic Data Types Topic 7: Algebraic Data Types 1 Recommended Exercises and Readings From Haskell: The craft of functional programming (3 rd Ed.) Exercises: 5.5, 5.7, 5.8, 5.10, 5.11, 5.12, 5.14 14.4, 14.5, 14.6 14.9, 14.11,

More information

CS-202 Introduction to Object Oriented Programming

CS-202 Introduction to Object Oriented Programming CS-202 Introduction to Object Oriented Programming California State University, Los Angeles Computer Science Department Lecture III Inheritance and Polymorphism Introduction to Inheritance Introduction

More information

CSE 8B Programming Assignments Spring Programming: You will have 5 files all should be located in a dir. named PA3:

CSE 8B Programming Assignments Spring Programming: You will have 5 files all should be located in a dir. named PA3: PROGRAMMING ASSIGNMENT 3: Read Savitch: Chapter 7 Programming: You will have 5 files all should be located in a dir. named PA3: ShapeP3.java PointP3.java CircleP3.java RectangleP3.java TriangleP3.java

More information

"Charting the Course... Comprehensive Angular 6 Course Summary

Charting the Course... Comprehensive Angular 6 Course Summary Course Summary Description Build applications with the user experience of a desktop application and the ease of deployment of a web application using Angular. Start from scratch by learning the JavaScript

More information

JavaScript I Language Basics

JavaScript I Language Basics JavaScript I Language Basics Chesapeake Node.js User Group (CNUG) https://www.meetup.com/chesapeake-region-nodejs-developers-group START BUILDING: CALLFORCODE.ORG Agenda Introduction to JavaScript Language

More information