title: How does Typescript 2 enforce non-nullable types?
body: <p>I know a general explanation is that the compiler does static type checking, but what methods specifically does the compiler use to verify that no nullable types accidentally come into play?</p>