#1 Goal for this course
By the end of this course, I want you to have a rock solid mental model, that will serve you well for years
What is TypeScript?
TypeScript is an open source, typed syntactic superset of JavaScript
- Compiles to readable JS
- Three parts: Language, Language Server and Compiler
- Kind of like a fancy linter
TypeScript is increasingly popular
Why developers want types
It allows you, as a code author, to leave more of your intent “on the page”
This kind of intent is often missing from JS code. For example:
jsfunction add(a, b) {return a + b}
Is this meant to take numbers as args? strings? both?
What if someone who interpreted a and b as numbers made this “backwards-compatible change?”
jsfunction add(a, b, c = 0) {return a + b + c}
We’re headed for trouble if we decided to pass strings in for a and b!
Types make the author’s intent more clear
tsTryfunctionadd (a : number,b : number): number {returna +b }Argument of type 'string' is not assignable to parameter of type 'number'.2345Argument of type 'string' is not assignable to parameter of type 'number'.add (3,"4" )
It has the potential to move some kinds of errors from runtime to compile time 1
Examples:
- Values that are potentially absent (
nullorundefined) - Incomplete refactoring
- Breakage around internal code contracts (e.g., an argument becomes required)
It serves as the foundation for a great code authoring experience
Example: in-editor autocomplete, as shown here:
tsTrywindow .setInterval
- TypeScript by itself is not going to reduce the occurrence of errors in your projects. It does, however, provide several tools that greatly improve visibility of some kinds of defects.↩