{
  "compilerOptions": {
    "outDir": "dist",
    "allowJs": true,
    "checkJs": false,      // 关键
    "declaration": false,   // 关键
    /**
     * ES Module support
     */
    "target": "esnext",

    // ES Modules: https://www.typescriptlang.org/tsconfig#module
    // https://devblogs.microsoft.com/typescript/announcing-typescript-4-5-beta/#esm-nodejs
    // "module": "nodenext",
    "module": "esnext",

    // https://www.typescriptlang.org/tsconfig#moduleResolution
    // "moduleResolution": "nodenext",
    "moduleResolution": "node",

    /**
     * Other settings
     */
    "traceResolution"   : false,
    "noLib"             : false,
    "resolveJsonModule" : false,
    "sourceMap"         : true,
    "skipLibCheck"      : true,
    "esModuleInterop"   : true,

    "emitDecoratorMetadata"  : true,
    "experimentalDecorators" : true,

    "lib": [
      "esnext",
    ],

    "strict"                     : true,
    "noEmitOnError"              : true,
    "noUnusedLocals"             : true,
    "noImplicitReturns"          : true,
    "noImplicitOverride"         : true,
    "noUncheckedIndexedAccess"   : true,
    "noPropertyAccessFromIndexSignature": true,
    "noFallthroughCasesInSwitch" : true,
    "strictNullChecks"           : true,
    "noImplicitAny"              : true,
    "noUnusedParameters"         : true,
    "noImplicitThis"             : true,
    "forceConsistentCasingInFileNames": true,
  },
  "ts-node": {
    // It is faster to skip typechecking.
    // Remove if you want ts-node to do typechecking.
    "transpileOnly": true,
    "transpiler": "ts-node/transpilers/swc-experimental",
  },
  "exclude": [
    "node_modules/",
    "dist/",
  ],
  "include": [
    "src/**/*.js",
  ],
}
