Skip to content

tsjson #9

@tzcteddy

Description

@tzcteddy
{
  "compilerOptions": {
    "allowUnreachableCode": false, // 报告执行不到的代码错误。
    "allowUnusedLabels": false,	// 报告未使用局部变量的错误。
    "noUnusedParameters": false,	// 报告未使用参数的错误。
    "noImplicitReturns": false,	// 当函数中并非所有代码路径都返回值时报告错误。
    "noFallthroughCasesInSwitch": false,	// 在switch语句中报告错误。
    "alwaysStrict": false, // 以严格模式解析并为每个源文件生成 "use strict" 语句。
    "experimentalDecorators": true, // 支持对 ES7 decorator 的实验支持。
    "emitDecoratorMetadata": true, // 启用了对为 decorator 发出类型元数据的实验性支持。reflect-metadata
    "noImplicitAny": false, // 对隐含的“any”类型的表达式和声明提出错误。
    "strictNullChecks": false, // 启用严格的空检查。
    "strictFunctionTypes": false, // 启用对函数类型的严格检查。
    "noImplicitThis": false, // 对包含“any”类型的“this”表达式提出错误。
    "noImplicitAny": false, // 对隐含的“any”类型的表达式和声明提出错误。
    "allowSyntheticDefaultImports": true, // 允许从没有默认导出的模块进行默认导入。这并不影响代码发出,只影响类型查询。
    "esModuleInterop":true, // 通过为所有导入创建名称空间对象,支持CommonJS和ES模块之间的互操作性。意味着 “allowSyntheticDefaultImports”。 
    "resolveJsonModule": true, // 支持 import x from 'x.json'
    "strictPropertyInitialization": true, // 在类中启用严格的属性初始化检查。
    "preserveConstEnums": true, // 保留 const enum 声明。
    "removeComments": true, // 是否移除注释
    "jsx": "react", // 在 .tsx 文件里支持 JSX,指定jsx代码生成:“preserve”、“response -native”或“react”。
    "sourceMap": true, // 是否生成 map 文件
    "baseUrl": "./src", // 工作根目录
    "paths": {
      "client": [ // 指定后可以在文件之直接 import * from 'client/x';
        "./src/client"
      ],
    },
    "types": [
      "node", // 仅引入 node 的类型声明。编译其他的引用 type 会报错。
    ],
    "target": "es6", // 指定ECMAScript目标版本:“ES3”(默认)、“es5”、“ES2015”、“ES2016”、“ES2017”、“ES2018”或“ESNEXT”。
    "module": "commonjs", // 指定模块代码生成:“none”、“commonjs”、“amd”、“system”、“umd”、“es2015”或“ESNext”。
    "outDir": "./dist", // 输出目录
    "declaration": true, // 是否自动创建类型声明文件
    "declarationDir": "./lib", // 类型声明文件的输出目录
    "allowJs": false, // “使用默认”,允许编译 javascript 文件
    "lib": [ // 编译过程中需要引入的库文件的列表
      "es5",
      "es2015",
      "es2016",
      "es2017",
      "es2018",
      "dom"
    ]
  },
  // 指定一个匹配列表(属于自动指定该路径下的所有ts相关文件)
  "include": [
    "src/**/*"
  ],
  // 指定一个排除列表(include的反向操作)
  "exclude": [
    "demo.ts"
  ],
  // 指定哪些文件使用该配置(属于手动一个个指定文件)
  "files": [
    "demo.ts"
  ]
}

compilerOptions
编译选项:只在 ts 被编译时生效。执行 'tsc' 命令生效。
PS: 目前,packing 是没有执行 tsc 命令,仅使用 babel 进行了 typescript 编码,所以,项目文件 tsconfig.json 中 compilerOptions 并没有作用。

experimentalDecorators, emitDecoratorMetadata
是否支持使用装饰器语法,是否启用反射。nest 框架需要开启。

参考:https://www.cnblogs.com/Answer1215/p/5574234.html

allowSyntheticDefaultImports, esModuleInterop
是否支持 Commonjs 模块使用 ES6 模块方式 import 。

参考:https://blog.csdn.net/juzipidemimi/article/details/103438437

types, typeRoots
types: 指定引入的类型声明文件,默认是自动引入所有声明文件,一旦指定该选项,则会禁用自动引入,改为只引入指定的类型声明文件,如果指定空数组[]则不引用任何文件。
typeRoots: 和 types 类似,指定类型声明文件的路径。

注意:只影响编译 tsc 查找类型定义。

// 编写代码过程不会报错,进行了全局声明
declare global {
    namespace NodeJS {
        interface Process {
            noDeprecation: boolean;
        }
    }
}
process.noDeprecation = true;
console.log(process.noDeprecation);


// tsconfig.json
{
    "compilerOptions": {
      "target": "es5",
      "module": "commonjs",
      "declaration": true,
      "outDir": "./dist",
      "strict": true,
      "esModuleInterop": true,
      "resolveJsonModule": true,
      "types": []
  }
}

paths
指定模块的路径,和 baseUrl 有关联,和 webpack 中 resolve.alias 配置一样

preserveConstEnums
参考:https://www.jianshu.com/p/b56114bc2706

lib
编译时,可以引入的库。比如:String.prototype.padEnd 方法,比较新,如果指定,需要相应列出。

files, include, exclude
表名 ts 管理的文件,vscode 当做 ts 文件处理。优先级 files > exclude > include 。

extends
配置扩展,根据环境配置不同的编译参数。tsconfig.build.json

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions