skipLibCheck(defaultfalse): skip type-checking every declaration file, both those innode_modulesand your own.d.ts. Your code is still checked against those types; only errors inside the.d.tsare not reported. It saves time and hides broken or conflicting third-party typings (two copies of one library's types, for example). The TSConfig reference tags it Recommended, and for applications I turn it on. For a library, the generated.d.tsis what consumers load, so I would keep it off at least where I build and validate them.declaration: emit a.d.tsbeside each JS file, describing the public API. A published package needs it;compositeturns it on.emitDeclarationOnlyskips the JS, for when another tool produces it.declarationDirmoves the.d.tsfiles elsewhere.declarationMap: emit.d.ts.mapso "Go to Definition" lands in the.tssource instead of the.d.ts. The reference suggests it when you use project references.sourceMap: emit.js.mapand append//# sourceMappingURL=...to the JS, so debuggers and error reports show TypeScript lines. Node ignores maps unless started with--enable-source-maps.inlineSourcesembeds the original source in the map;inlineSourceMapputs the map in the JS file and excludessourceMap.noEmit: write nothing. Use it when a bundler, esbuild, or Node's type stripping produces the JavaScript andtscis only the type-checker in CI.
Emit flags do not depend on errors: noEmitOnError defaults to false, so output is written even when type errors are reported.