Slide 1

Slide 1 text

TypeScript International JavaScript Conference April 2018 @Srushtika | Ably Realtime | iJS | 2018

Slide 2

Slide 2 text

Hi! I’m Srushtika @Srushtika [email protected] Developer Advocate

Slide 3

Slide 3 text

TypeScript Why? @Srushtika | Ably Realtime | iJS | 2018

Slide 4

Slide 4 text

JAVASCRIPT Hipster much? @Srushtika | Ably Realtime | iJS | 2018

Slide 5

Slide 5 text

In a regular project cycle Write new code Write new code Document Maintain @Srushtika | Ably Realtime | iJS | 2018

Slide 6

Slide 6 text

In a regular project cycle Write new code Write new code Document Maintain @Srushtika | Ably Realtime | iJS | 2018

Slide 7

Slide 7 text

TypeScript What? @Srushtika | Ably Realtime | iJS | 2018

Slide 8

Slide 8 text

@Srushtika | Ably Realtime | iJS | 2018

Slide 9

Slide 9 text

@Srushtika | Ably Realtime | iJS | 2018

Slide 10

Slide 10 text

TypeScript How? @Srushtika | Ably Realtime | iJS | 2018

Slide 11

Slide 11 text

Types @Srushtika | Ably Realtime | iJS | 2018

Slide 12

Slide 12 text

Interfaces @Srushtika | Ably Realtime | iJS | 2018

Slide 13

Slide 13 text

Classes & OOP @Srushtika | Ably Realtime | iJS | 2018

Slide 14

Slide 14 text

Migrating to TypeScript? Here’s how we did it at Ably @Srushtika | Ably Realtime | iJS | 2018

Slide 15

Slide 15 text

Understanding the problem Realization ● Explosive growth in codebase ● Growth in the development team ● Long onboarding time ● Long and complex refactoring of existing code Research Flow vs TypeScript: go.ably.io/typescript-vs-flow Progressive Migration ● Setup TypeScript configuration ● Convert files that have most active development ● Use of a designated procedure to convert each file @Srushtika | Ably Realtime | iJS | 2018

Slide 16

Slide 16 text

Migration Steps @Srushtika | Ably Realtime | iJS | 2018

Slide 17

Slide 17 text

Refactoring and Documentation @Srushtika | Ably Realtime | iJS | 2018

Slide 18

Slide 18 text

Tips & Tricks @Srushtika | Ably Realtime | iJS | 2018

Slide 19

Slide 19 text

noImplicityAny @Srushtika | Ably Realtime | iJS | 2018

Slide 20

Slide 20 text

Object vs any @Srushtika | Ably Realtime | iJS | 2018

Slide 21

Slide 21 text

Function overloading @Srushtika | Ably Realtime | iJS | 2018

Slide 22

Slide 22 text

Function return types @Srushtika | Ably Realtime | iJS | 2018

Slide 23

Slide 23 text

const variables and types? Really? @Srushtika | Ably Realtime | iJS | 2018

Slide 24

Slide 24 text

Interfaces with Classes @Srushtika | Ably Realtime | iJS | 2018

Slide 25

Slide 25 text

John Diamond https://github.com/jdmnd

Slide 26

Slide 26 text

Thankyou! @Srushtika | Ably Realtime | iJS | 2018