About the Instructor
- Frontend Masters instructor for 9 years
- Developer Platform Lead @ Stripe
- Designs Stripe’s API semantics
- Architect responsible for TypeScript projects like node-stripe, Stripe Shell, and Stripe Workbench
#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:
js
function 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?”
js
function 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
tsTry
functionadd (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 (
null
orundefined
) - 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:
tsTry
window .setInterval
Workshop Setup
As long as you can access the following websites, you should require no further setup
Agenda
- Using
tsc
and compiling TS code into JavaScript - Variables and simple values
- Objects and arrays
--- BREAK ---
- Categorizing type systems
- Set theory, Union and Intersection types
- Interfaces and Type Aliases
--- LUNCH ---
- Hack: Writing types for JSON values
- Functions
- Classes in TypeScript
- Top and bottom types
- User-defined Type guards
--- BREAK ---
- Handling nullish values
- Generics
- Hack: higher-order functions for dictionaries
- Wrap up
-
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.
↩