tsconfig.json 配置文件,通过注释简单说明配置含义

{
  // ts 编译为 js 的配置选项
  "compilerOptions": {
    // ts 编译为目标 js 的语法版本。设置为高版本或许可以提高转换速度。
    // 我们并不需要 ts 来做代码兼容。代码兼容交给 babel 来做。
    "target": "ESNext",
    // 是否启用 class fields 语法。
    // 实际上在新版 ts 里已经支持 class fields 语法。
    // 所以在新版这个配置无效,使用 class fields 语法不会报错。
    "useDefineForClassFields": false,
    // 支持环境 api。比如要运行到浏览器里,那么需要包含浏览器 document 相关的 api。
    "lib": ["DOM", "DOM.Iterable", "ESNext"],
    // 允许 js 文件被引入到 ts 文件。
    "allowJs": false,
    // 跳过对声明文件 (扩展名为 .d.ts 的文件) 的类型检查。缩短编译时间
    "skipLibCheck": true,
    // 支持合成默认导入。使 esm 里支持 cjs 模块。
    "esModuleInterop": false,
    // 允许合成默认导出。在 esm 里,支持 cjs 默认导出
    "allowSyntheticDefaultImports": true,
    // 下面七个配置的总配置。优先级低。
    "strict": true,
    // 不允许隐式 any 类型
    "noImplicitAny": true,
    // 严格检查 null 类型
    "strictNullChecks": true, 
    // 严格函数类型
    // function getCurrentYear(callback: (date: string | number) => void) {
    //   callback(Math.random() > 0.5 ? '2020' : 2020)
    // }
    // getCurrentYear((date: string) => {
    //   console.log(date.charAt(0))
    // })
    "strictFunctionTypes": true,
    // 使用 bind、call 和 apply 语法的时候,是否进行参数检查
    "strictBindCallApply": true,
    // 这个选项要和 strictNullChecks 配合使用才行。该选项用于检查类的属性是否被初始化,如果开启则必须进行初始化。
    "strictPropertyInitialization": true,
    // 不允许出现隐式any类型的this  
    "noImplicitThis": true,
    // 就是 JavaScript 中的 "use strict",肯定是要开启的
    "alwaysStrict": true,
    // 强制引入文件名的大小写一致。防止对大小写敏感的系统出错。
    "forceConsistentCasingInFileNames": true,
    // 默认值为 none。打包工具会处理成符合规范的模块化代码。
    "module": "ESNext",
    // 模块导入解析策略。node 会在 node_modules 里去找。
    "moduleResolution": "Node",
    // 是否支持引入 json 文件
    "resolveJsonModule": true,
    // 强制要求导入、导出类型都加上 type
    "isolatedModules": true,
    // 不输出转化后的 js 文件
    "noEmit": true,
    // TS具有三种JSX模式:preserve,react和react-native
    // 在preserve模式下生成代码中会保留JSX以供后续的转换操作使用
    // react模式会生成React.createElement,在使用前不需要再进行转换操作了
    // react-native相当于preserve,它也保留了所有的JSX,但是输出文件的扩展名是.js
    "jsx": "react-jsx",
    // 设置路径文件名,用于项目中路径简写
    "paths": {
      "@/*": ["./src/*"]
    },
  },
  // include 字段用于指明需要被 tsc 编译的文件或文件夹列表,例如:
  "include": ["src"],
  // “项目引用(Project References)” 功能,它允许用户为项目的不同部分使用不同的 TypeScript 配置。
  "references": [{ "path": "./tsconfig.node.json" }]
}

你可能感兴趣的:(json,javascript,前端)