Skip to content

base.json:

json
{
    "$schema": "https://json.schemastore.org/tsconfig",
    "compilerOptions": {
        // Enable top-level await, and other modern ESM features.
        "target": "ESNext",
        "module": "ESNext",
        // Enable node-style module resolution, for things like npm package imports.
        "moduleResolution": "node",
        // Enable JSON imports.
        "resolveJsonModule": true,
        // Enable stricter transpilation for better output.
        "isolatedModules": true,
        // Astro directly run TypeScript code, no transpilation needed.
        "noEmit": true,
        // Report an error when importing a file using a casing different from the casing on disk.
        "forceConsistentCasingInFileNames": true,
        // Properly support importing CJS modules in ESM
        "esModuleInterop": true,
        // Skip typechecking libraries and .d.ts files
        "skipLibCheck": true,
        // Allow 'import x from y' when a module doesn't have a default export.
        "allowSyntheticDefaultImports": true
    }
}
{
    "$schema": "https://json.schemastore.org/tsconfig",
    "compilerOptions": {
        // Enable top-level await, and other modern ESM features.
        "target": "ESNext",
        "module": "ESNext",
        // Enable node-style module resolution, for things like npm package imports.
        "moduleResolution": "node",
        // Enable JSON imports.
        "resolveJsonModule": true,
        // Enable stricter transpilation for better output.
        "isolatedModules": true,
        // Astro directly run TypeScript code, no transpilation needed.
        "noEmit": true,
        // Report an error when importing a file using a casing different from the casing on disk.
        "forceConsistentCasingInFileNames": true,
        // Properly support importing CJS modules in ESM
        "esModuleInterop": true,
        // Skip typechecking libraries and .d.ts files
        "skipLibCheck": true,
        // Allow 'import x from y' when a module doesn't have a default export.
        "allowSyntheticDefaultImports": true
    }
}

strict.json

json
{
    "$schema": "https://json.schemastore.org/tsconfig",
    "extends": "./base.json",
    "compilerOptions": {
        "strict": true,
        // Error when a value import is only used as a type.
        "importsNotUsedAsValues": "error"
    }
}
{
    "$schema": "https://json.schemastore.org/tsconfig",
    "extends": "./base.json",
    "compilerOptions": {
        "strict": true,
        // Error when a value import is only used as a type.
        "importsNotUsedAsValues": "error"
    }
}

strictest.json

json
{
    "$schema": "https://json.schemastore.org/tsconfig",
    "extends": "./strict.json",
    "compilerOptions": {
        // Report errors for fallthrough cases in switch statements
        "noFallthroughCasesInSwitch": true,
        // Force functions designed to override their parent class to be specified as `override`.
        "noImplicitOverride": true,
        // Force functions to specify that they can return `undefined` if a possible code path does not return a value.
        "noImplicitReturns": true,
        // Report an error when a variable is declared but never used.
        "noUnusedLocals": true,
        // Report an error when a parameter is declared but never used.
        "noUnusedParameters": true,
        // Force the usage of the indexed syntax to access fields declared using an index signature.
        "noUncheckedIndexedAccess": true,
        // Report an error when the value `undefined` is given to an optional property that doesn't specify `undefined` as a valid value.
        "exactOptionalPropertyTypes": true,
        // Report an error for unreachable code instead of just a warning.
        "allowUnreachableCode": false,
        // Report an error for unused labels instead of just a warning.
        "allowUnusedLabels": false
    }
}
{
    "$schema": "https://json.schemastore.org/tsconfig",
    "extends": "./strict.json",
    "compilerOptions": {
        // Report errors for fallthrough cases in switch statements
        "noFallthroughCasesInSwitch": true,
        // Force functions designed to override their parent class to be specified as `override`.
        "noImplicitOverride": true,
        // Force functions to specify that they can return `undefined` if a possible code path does not return a value.
        "noImplicitReturns": true,
        // Report an error when a variable is declared but never used.
        "noUnusedLocals": true,
        // Report an error when a parameter is declared but never used.
        "noUnusedParameters": true,
        // Force the usage of the indexed syntax to access fields declared using an index signature.
        "noUncheckedIndexedAccess": true,
        // Report an error when the value `undefined` is given to an optional property that doesn't specify `undefined` as a valid value.
        "exactOptionalPropertyTypes": true,
        // Report an error for unreachable code instead of just a warning.
        "allowUnreachableCode": false,
        // Report an error for unused labels instead of just a warning.
        "allowUnusedLabels": false
    }
}

其他

application.json

json
{
    "$schema": "https://json.schemastore.org/tsconfig",
    "extends": "./strictest.json",
    "compilerOptions": {
        "isolatedModules": false
    }
}
{
    "$schema": "https://json.schemastore.org/tsconfig",
    "extends": "./strictest.json",
    "compilerOptions": {
        "isolatedModules": false
    }
}

Released under the MIT License.