target
tells TS what type of JS to generate, fores5
for conversion is required (for example let/const -> var, class -> function + prototype, etc.), whereases6
can just leave the original code as is (after removing type information).types
tells TS about what types exists and what their API is. When usinglib
you are asking TS to add known core types that it already has definitions for, without having to add those yourself (for example,@types/core-js
). When youimport
you adding more types that TS knows about. Additionally, you can use thetypes
configuration property to add global types.polyfills
are required at runtime to ensure that older browsers can use the constructs (such as Promise) that exist natively in modern browsers. At this point, TS is not involved at all.