Skip to content

Instantly share code, notes, and snippets.

@ryanatkn
Last active April 27, 2024 22:35
Show Gist options
  • Star 29 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save ryanatkn/f1793abbe020e08b785cb56d4a712af1 to your computer and use it in GitHub Desktop.
Save ryanatkn/f1793abbe020e08b785cb56d4a712af1 to your computer and use it in GitHub Desktop.
A TypeScript 3.5 tsconfig.json with all options organized and with documentation comments
{
// Commented-out options have their default values.
"include": ["src/**/*"],
"exclude": ["node_modules/*"],
// "files": [], // A list of relative or absolute file paths to include.
// "extends": "", // A string containing a path to another configuration file to inherit from.
// "references": [], // An array of objects `{"path": "./to/dirOrConfig"}` that specifies projects to reference.
// "compileOnSave": false, // Signals to the IDE to generate all files for a given tsconfig.json upon saving.
"compilerOptions": {
// Main options
"target": "esnext", // Specify ECMAScript target version: 'es3' (default), 'es5', 'es2015', 'es2016', 'es2017','es2018' or 'esnext'.
"module": "esnext", // Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'.
"lib": ["esnext", "dom"], // Specify library files to be included in the compilation.
// "allowJs": false, // Allow javascript files to be compiled.
// "checkJs": false, // Report errors in .js files.
// "outFile": "./", // Concatenate and emit output to single file.
// "outDir": "./", // Redirect output structure to the directory.
// "rootDir": "./", // Specify the root directory of input files. Use to control the output directory structure with `--outDir`.
// "project": "", // Compile a project given a valid configuration file.
// Compilation options
// "composite": true, // Enable project compilation: https://www.typescriptlang.org/docs/handbook/project-references.html
// "diagnostics": false, // Show diagnostic information.
// "incremental": true, // Enable incremental compilation by reading/writing information from prior compilations to a file on disk.
// "isolatedModules": false, // Transpile each file as a separate module (similar to 'ts.transpileModule').
// "listEmittedFiles": false, // Print names of generated files part of the compilation.
// "listFiles": true, // Print names of files part of the compilation.
// "noErrorTruncation": false, // Do not truncate error messages.
// "preserveWatchOutput": false, // Keep outdated console output in watch mode instead of clearing the screen.
// "traceResolution": false, // Enable tracing of the name resolution process.
// "tsBuildInfoFile": ".tsbuildinfo", // Specify file to store incremental compilation information.
// Strict typechecking options
"strict": true, // Enable all strict type-checking options.
// "noImplicitAny": true, // Raise error on expressions and declarations with an implied 'any' type.
// "noImplicitThis": true, // Raise error on 'this' expressions with an implied 'any' type.
// "strictBindCallApply": true, // Enable stricter checking of of the `bind`, `call`, and `apply` methods on functions.
// "strictFunctionTypes": true, // Disable bivariant parameter checking for function types.
// "strictNullChecks": true, // In strict null checking mode, the null and undefined values are not in the domain of every type and are only assignable to themselves and any.
// "strictPropertyInitialization": true, // Ensure non-undefined class properties are initialized in the constructor. This option requires `--strictNullChecks` be enabled in order to take effect.
// "alwaysStrict": true, // Parse in strict mode and emit "use strict" for each source file.
// Additional checks
// "allowUnreachableCode": false, // Do not report errors on unreachable code.
// "allowUnusedLabels": false, // Do not report errors on unused labels.
"forceConsistentCasingInFileNames": true, // Disallow inconsistently-cased references to the same file.
// "noStrictGenericChecks": false, // Disable strict checking of generic signatures in function types.
"noUnusedLocals": true, // Report errors on unused locals.
"noUnusedParameters": true, // Report errors on unused parameters.
"noImplicitReturns": true, // Report error when not all code paths in function return a value.
"noFallthroughCasesInSwitch": true, // Report errors for fallthrough cases in switch statement.
// "skipLibCheck": false, // Skip type checking of all declaration files (*.d.ts).
// "suppressExcessPropertyErrors": false, // Suppress excess property checks for object literals.
// "suppressImplicitAnyIndexErrors": false, // Suppress noImplicitAny errors for indexing objects lacking index signatures.
// Module resolution options
"moduleResolution": "node", // Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6).
// "baseUrl": "./", // Base directory to resolve non-absolute module names.
// "paths": {}, // A series of entries which re-map imports to lookup locations relative to the 'baseUrl'.
// "rootDirs": [], // List of root folders whose combined content represents the structure of the project at runtime.
// "typeRoots": [], // List of folders to include type definitions from.
"types": [], // Type declaration files to be included in compilation.
// "allowSyntheticDefaultImports": false // Allow default imports from modules with no default export. This does not affect code emit, just typechecking.
// "esModuleInterop": false, // Emit '__importStar' and '__importDefault' helpers for runtime babel ecosystem compatibility and enable '--allowSyntheticDefaultImports' for typesystem compatibility.
// "maxNodeModuleJsDepth": 0, // The maximum dependency depth to search under node_modules and load JavaScript files. Only applicable with --allowJs.
// "preserveSymlinks": false, // Do not resolve the real path of symlinks.
"resolveJsonModule": true // Include modules imported with '.json' extension.
// Emit options
// "declaration": false, // Generates corresponding '.d.ts' file.
// "declarationDir": "./", // Output directory for generated declaration files.
// "declarationMap": false, // Generates a sourcemap for each corresponding '.d.ts' file.
// "emitBOM": false, // Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files.
// "emitDeclarationOnly": false, // Only emit ‘.d.ts’ declaration files.
// "importHelpers": false, // Import emit helpers from 'tslib'.
// "newLine": "LF", // Use the specified end of line sequence to be used when emitting files: "crlf" (windows) or "lf" (unix).”
// "noEmit": true, // Do not emit outputs.
// "noEmitHelpers": false, // Do not generate custom helper functions like __extends in compiled output.
// "noEmitOnError": false, // Do not emit outputs if any errors were reported.
// "noImplicitUseStrict": false, // Do not emit "use strict" directives in module output.
// "noResolve": false, // Do not add triple-slash references or module import targets to the list of compiled files.
// "preserveConstEnums": false, // Do not erase const enum declarations in generated code.
// "removeComments": false, // Remove all comments except copy-right header comments beginning with //!
// "experimentalDecorators": true, // Enables experimental support for ES7 decorators.
// "emitDecoratorMetadata": true, // Enables experimental support for emitting type metadata for decorators.
// Source map options
// "sourceMap": false, // Generates corresponding '.map' file.
// "sourceRoot": "", // Specify the location where debugger should locate TypeScript files instead of source locations.
// "mapRoot": "", // Specify the location where debugger should locate map files instead of generated locations.
// "inlineSourceMap": true, // Emit a single file with source maps instead of having a separate file.
// "inlineSources": true, // Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set.
// JSX options
// "jsx": "preserve", // Specify JSX code generation: 'preserve', 'react-native', or 'react'.
// "jsxFactory": "React.createElement", // Specify the JSX factory function to use when targeting react JSX emit, e.g. 'React.createElement' or 'h'.
// Other options
// "allowUmdGlobalAccess": true, // Allow accessing UMD globals from modules.
// "charset": "utf8", // The character set of the input files.
// "downlevelIteration": false, // Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'.
// "disableSizeLimit": false, // Disable size limitation on JavaScript project.
// "keyofStringsOnly": false, // Resolve 'keyof' to string valued property names only (no numbers or symbols).
// "noLib": false, // Do not include the default library file (lib.d.ts).
// "pretty": true, // Stylize errors and messages using color and context.
}
}
@ryanatkn
Copy link
Author

ryanatkn commented Jun 24, 2019

The new TypeScript Handbook compiler option docs (currently work in progress) are a big improvement over the original compiler docs.

Some users on reddit pointed out that you can get a similar config with tsc --init, but with the latest v3.5.2 that only gives you 48 options, compared to 82 here. It's also documented officially at json.schemastore.org/tsconfig, and that appears to be a more complete version than what's here. I'm going to follow up soon to see what could be missing from this one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment