'Where does the lib come from in typecsript?

I have a typescript@2 project. I wanted to use some ecma2017 features. I found out that one can apply a lib in the compilerOptions in the tsconfig.json:

"target": "es6",
"lib": [
    "es2017",
    "dom"
],

Yet why is this working? Where do these lib come from, what libs can one include?

The closest to a documentation I could find was this this what's new entry:

Downlevel Async Functions

This feature was supported before TypeScript 2.1, but only when targeting ES6/ES2015. TypeScript 2.1 brings the capability to ES3 and ES5 run-times, meaning you'll be free to take advantage of it no matter what environment you're using.

Note: first, we need to make sure our run-time has an ECMAScript-compliant Promise available globally. That might involve grabbing a polyfill for Promise, or relying on one that you might have in the run-time that you're targeting. We also need to make sure that TypeScript knows Promise exists by setting your lib flag to something like "dom", "es2015" or "dom", "es2015.promise", "es5"

yet I didn't find it particular helpful.



Solution 1:[1]

All values of the compiler options lib is referenced in the Lib documentation:

List of library files to be included in the 

Possible values are: 
? ES5 
? ES6 
? ES2015 
? ES7 
? ES2016 
? ES2017 
? ESNext 
? DOM 
? DOM.Iterable 
? WebWorker 
? ScriptHost 
? ES2015.Core 
? ES2015.Collection 
? ES2015.Generator 
? ES2015.Iterable 
? ES2015.Promise 
? ES2015.Proxy 
? ES2015.Reflect 
? ES2015.Symbol 
? ES2015.Symbol.WellKnown 
? ES2016.Array.Include 
? ES2017.object 
? ES2017.SharedMemory 
? esnext.asynciterable 

Note: If --lib is not specified a default library is injected. The default library injected is: 
? For --target ES5: DOM,ES5,ScriptHost
? For --target ES6: DOM,ES6,DOM.Iterable,ScriptHost

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 silkfire