Static typing in JavaScript
What is static typing?
What is static typing
JavaScript has types but they are only known at runtime
Static typing adds support for type checking to a language at compile time
Can you look at a random piece of code and tell what might be the type of a variable before it runs?
You can sometimes - it's called type inference
But cannot in many cases - where one might need explicit type definitions
Enforces a contract on the type of shape a value can take beforehand
Examples of statically typed languages
Java, C, C++
Haskell, Purescript, Elm
Scala
Fsharp
Csharp
Objective C
Pros of static typing
Thinking in types first
Domain driven development with types
Early bug detection
Some unit tests are no longer needed
Documentation which can be trusted at all times
Refactor with confidence
Both small and full architecture refactors
Editor/IDE support
More information about a variable
Better and more intelligent autocomplete
Automatic refactorings
In a big team, defines interfaces which everyone can understand
Adds a layer of safety and correction
Cons of static typing
Higher upfront cost
Have to think about types before you see anything on the screen
Learning curve
Thinking in types is a skill which needs time to master
Third party libraries might not be typed
Even if they are typed, the types might be very shallow (e.g. "any" type for everything)
Adds to development time
For team new to react, better investments might be in
react patterns
redux patterns
testing strategies
Available options
Typescript
More mature system
Has better support for third party typed libraries
Has better editor support system
Specially with vscode
Needs bigger commitment - all or none
Flow
Is new but allows gradual introduction to current system (not a problem we have right now)
Has problem with a lot of breaking changes with every new release
Statically typed languages which compile down to javascript - Elm, Purescript, Reasonml
Thanks
Made with Slides.com