TypeScript, Dart, CoffeeScript and JavaScript Comparison

26
TypeScript, Dart, CoffeeScript and JavaScript Comparison L i f e M i c h a e l . c o m Haim Michael September 7th, 2016 All logos, trade marks and brand names used in this presentation belong to the respective owners.

Transcript of TypeScript, Dart, CoffeeScript and JavaScript Comparison

Page 1: TypeScript, Dart, CoffeeScript and JavaScript Comparison

TypeScript, Dart, CoffeeScriptand JavaScript Comparison

Li fe M

ic hae l .c o

m

Haim MichaelSeptember 7th, 2016

All logos, trade marks and brand names used in this presentation belong to the respective owners.

Page 2: TypeScript, Dart, CoffeeScript and JavaScript Comparison

Table of ContentLi fe M

ic hae l .c o

m● What is JavaScript?

● ECMAScript Specification

● Transpiling into JavaScript

● What is TypeScript?

● What is Dart?

● What is CoffeeScript?

● Detailed Comparison

● Questions & Answers

Page 3: TypeScript, Dart, CoffeeScript and JavaScript Comparison

What is JavaScript?Li fe M

ic hae l .c o

m● The JavaScript programming language is been used

on multiple different platforms. Some belong to the

client side. Other to the server.

Page 4: TypeScript, Dart, CoffeeScript and JavaScript Comparison

ECMA Script SpecificationLi fe M

ic hae l .c o

m● The ECMAScript sets some order in the JavaScript

eco system.

● ECMAScript 2015 (ES6)

ECMAScript 2016 (ES7)

ECMAScript 2017 (ES8)

...

Page 5: TypeScript, Dart, CoffeeScript and JavaScript Comparison

ECMA Script SpecificationLi fe M

ic hae l .c o

m

http://kangax.github.io/compat-table/es6/

Page 6: TypeScript, Dart, CoffeeScript and JavaScript Comparison

Transpiling into JavaScriptLi fe M

ic hae l .c o

m● There is a huge number of various programming

languages we can transpile into JavaScript.

https://github.com/jashkenas/coffeescript/wiki/list-of-

languages-that-compile-to-js

Page 7: TypeScript, Dart, CoffeeScript and JavaScript Comparison

What is TypeScript?Li fe M

ic hae l .c o

m● The TypeScript programming language was

developed by Microsoft. It is an open source

programming language.

● The code we write in TypeScript is transpiled into

JavaScript, so we can basically use TypeScript

wherever we use JavaScript.

http://www.typescriptlang.org

Page 8: TypeScript, Dart, CoffeeScript and JavaScript Comparison

What is TypeScript?Li fe M

ic hae l .c o

m● TypeScript is a superset of JavaScript. It includes the

entire JavaScript programming language together with

additional capabilities.

● In general, nearly every code we can write in

JavaScript can be included in code we write in

TypeScript.

Page 9: TypeScript, Dart, CoffeeScript and JavaScript Comparison

What is TypeScript?Li fe M

ic hae l .c o

m● TypeScript's main added value is the ability to code

with types. It allows us to define new classes and new

interfaces. TypeScript allows us to specify the type of

each and every variable and is even capable of

interfering the type by itself. TypeScript allows us to

use JavaScript as if it was a strictly type programming

language.

Page 10: TypeScript, Dart, CoffeeScript and JavaScript Comparison

What is TypeScript?Li fe M

ic hae l .c o

m

class Rectangle{ private width:number; private height:number; constructor( w:number, h:number) { this.setWidtht(w); this.setHeight(h); } setWidtht(num:number):void { if(num>0) { this.width = num; } } …}

Page 11: TypeScript, Dart, CoffeeScript and JavaScript Comparison

What is Dart?Li fe M

ic hae l .c o

m● Dart is an open source class based, object oriented,

optionally typed programming language that allows us

to develop browser based one page web applications.

Dart can be used for the server side.

● Dart is developed by Google and the initial plan was

to have a Dart VM installed on every web browser.

http://www.dartlang.org

Page 12: TypeScript, Dart, CoffeeScript and JavaScript Comparison

What is Dart?Li fe M

ic hae l .c o

m● Using the Dart virtual machine we can execute the

code written in Dart on the server side.

● We can execute the code either by using a web

browser that supports Dart or by compiling the code

into JavaScript.

Page 13: TypeScript, Dart, CoffeeScript and JavaScript Comparison

What is Dart?Li fe M

ic hae l .c o

m

class Rectangle{

double _width; double _height; Rectangle(double w,double h) { width = w; height = h; } get width => _width; set width(size) => (size>0)?_width=size:_width=10.0; get height => _height; set height(size) => (size>0)?_height=size:_height=10.0; area() => width * height; perimeter() => 2*(width+height);}

Page 14: TypeScript, Dart, CoffeeScript and JavaScript Comparison

What is Dart?Li fe M

ic hae l .c o

m

main(){

var ob = new Rectangle(3.2,4.4); ob.width = 20.2; ob.height = -4.1; var area = ob.area(); print("area is $area");}

Page 15: TypeScript, Dart, CoffeeScript and JavaScript Comparison

What is CoffeeScript?Li fe M

ic hae l .c o

m● CoffeeScript is a relatively small programming

language we can use for writing code and later

transpile it into JavaScript.

● CoffeeScript evolvement was inspired by Python and

Ruby. CoffeeScript provides developers with tools

similar to those you can find in Python and Ruby.

http://www.coffeescript.org

Page 16: TypeScript, Dart, CoffeeScript and JavaScript Comparison

What is CoffeeScript?Li fe M

ic hae l .c o

m

class Person

constructor: (@firstName,@lastName,@id) ->

printDetails: -> console.log "first name is #{@firstName}" console.log "last name is #{@lastName}" console.log "id is #{@id}"

Person a = new Person("haim","michael",123123)Person b = new Person("danidin","jack",234234)

a.printDetails()b.printDetails()

Page 17: TypeScript, Dart, CoffeeScript and JavaScript Comparison

Detailed ComparisonLi fe M

ic hae l .c o

m

Strict

Dynamic

Wh

ite S

pace

s S

ensi

tivity

Types Capabilities Lo

w

Hig

h

Coffee Script

Dart

TypeScript JavaScript

Page 18: TypeScript, Dart, CoffeeScript and JavaScript Comparison

Detailed ComparisonLi fe M

ic hae l .c o

m

Low

High

Ca

pabi

litie

s to

Use

3rd P

arty

JS

Lib

rarie

s

Object Oriented CapabilitiesLo

w

Hig

h

Coffee Script

Dart TypeScript

JavaScript

Page 19: TypeScript, Dart, CoffeeScript and JavaScript Comparison

Detailed ComparisonLi fe M

ic hae l .c o

m

Not Available

Available

Re

leas

e of

New

Ver

sion

s

Independent Virtual MachineR

are

Fre

quen

tly

Coffee Script Dart

TypeScript

JavaScript

(1) https://www.techempower.com/benchmarks/

(1)

Page 20: TypeScript, Dart, CoffeeScript and JavaScript Comparison

Detailed ComparisonLi fe M

ic hae l .c o

m

Simple Difficult

Sup

port

for

Gen

eric

s

Developing with Angular 2N

ot A

vaila

ble

Ava

ilabl

e

Coffee Script

Dart

TypeScript

JavaScript

Page 21: TypeScript, Dart, CoffeeScript and JavaScript Comparison

Detailed ComparisonLi fe M

ic hae l .c o

m

Low

Sup

port

for

Met

hods

Ove

rload

ing

Support for Use of InterfacesN

ot A

vaila

ble

Ava

ilabl

e

Coffee Script

Dart

TypeScript

JavaScript

High

Page 22: TypeScript, Dart, CoffeeScript and JavaScript Comparison

Detailed ComparisonLi fe M

ic hae l .c o

m

Low

Sup

port

for

Met

hods

Ove

rload

ing

Support for Access ModifiersN

ot A

vaila

ble

Ava

ilabl

e

Coffee Script

Dart

TypeScript

JavaScript

High

Page 23: TypeScript, Dart, CoffeeScript and JavaScript Comparison

Detailed ComparisonLi fe M

ic hae l .c o

m

Not Available

Sup

port

for

Enu

m

Support for Abstract ClassesN

ot A

vaila

ble

Ava

ilabl

e

Coffee Script

Dart

TypeScript

JavaScript

Available

Page 24: TypeScript, Dart, CoffeeScript and JavaScript Comparison

Detailed ComparisonLi fe M

ic hae l .c o

m

Low

IDE

Sup

port

PopularityLo

wH

igh

Coffee ScriptDart

TypeScript JavaScript

High

Page 25: TypeScript, Dart, CoffeeScript and JavaScript Comparison

Detailed ComparisonLi fe M

ic hae l .c o

m

Page 26: TypeScript, Dart, CoffeeScript and JavaScript Comparison

Questions & AnswersLi fe M

ic hae l .c o

m● Courses I start to deliver in HIT this November (28 weekly

meetings, 6800 shekels) include the following:

Android 7 Java Applications Development

Software Engineering in PHP

Front End Development

tinyurl.com/lifemichaelhitcourses

● If you enjoyed my lecture please leave me a comment

at http://speakermix.com/life-michael.

Thanks for your time!