Slide 1

Slide 1 text

https://flic.kr/p/t3H9A Tugberk Ugurlu Software Engineer @ Redgate @tourismgeek http://tugberkugurlu.com

Slide 2

Slide 2 text

https://flic.kr/p/e6nUW Once upon a time…

Slide 3

Slide 3 text

SQL Clone Web Client

Slide 4

Slide 4 text

https://flic.kr/p/faTRHU JavaScript!

Slide 5

Slide 5 text

https://flic.kr/p/7yqhJt More JavaScript!

Slide 6

Slide 6 text

https://flic.kr/p/6doME6 Oh, more JavaScript!

Slide 7

Slide 7 text

https://flic.kr/p/6sZ7Kp Fuck this shit!

Slide 8

Slide 8 text

https://flic.kr/p/cEJMpW TypeScript…

Slide 9

Slide 9 text

https://flic.kr/p/UfHzTE TypeScript!

Slide 10

Slide 10 text

Hold your seats! https://flic.kr/p/HnfDT

Slide 11

Slide 11 text

https://charlieharvey.org.uk/page/javascript_the_weird_parts JavaScript: The Friend of Your Enemy! x = [0] x == x -> true x == !x -> true #wtf true+true===2 -> true true-true===0 -> true true===1 -> false #wtf (!+[]+[]+![]).length -> 9 #wtf []+[] -> "" []+{} -> "[object Object]“ {}+[] -> 0 #wtf 0.1+0.2==0.3 -> false Math.max()>Math.min() -> false #wtf

Slide 12

Slide 12 text

Primary Motivations Compile-time safety (catch things early) Take advantage of TypeScript language features Make the context available on each module

Slide 13

Slide 13 text

Compile-time Safety

Slide 14

Slide 14 text

Compile-time Safety

Slide 15

Slide 15 text

Making the Context Available

Slide 16

Slide 16 text

Making the Context Available

Slide 17

Slide 17 text

TypeScript Language Features

Slide 18

Slide 18 text

Migration Experience https://flic.kr/p/o8WrWD

Slide 19

Slide 19 text

Moving Gradually...

Slide 20

Slide 20 text

tsconfig.json

Slide 21

Slide 21 text

Typings

Slide 22

Slide 22 text

TypeLite

Slide 23

Slide 23 text

VS Code

Slide 24

Slide 24 text

TSLint

Slide 25

Slide 25 text

TSLint VS Code Integration

Slide 26

Slide 26 text

https://twitter.com/dan_abramov/status/780475600716857344 :+1:

Slide 27

Slide 27 text

That’s all! https://flic.kr/p/99iZtS