chst365's blog chst365's blog
首页
  • Git
  • 网络
  • 操作系统
  • 浏览器
  • webpack
  • JavaScript
  • TypeScript
  • 性能
  • 工程化
  • React
  • 编程题
  • React技术揭秘
  • 算法
  • Node
  • 编码解码
  • NodeJS系列
  • Linux系列
  • JavaScript系列
  • HTTP系列
  • GIT系列
  • ES6系列
  • 设计模式系列
  • CSS系列
  • 小程序系列
  • 数据结构与算法系列
  • React系列
  • Vue3系列
  • Vue系列
  • TypeScript系列
  • Webpack系列
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

chst365

DIV工程师
首页
  • Git
  • 网络
  • 操作系统
  • 浏览器
  • webpack
  • JavaScript
  • TypeScript
  • 性能
  • 工程化
  • React
  • 编程题
  • React技术揭秘
  • 算法
  • Node
  • 编码解码
  • NodeJS系列
  • Linux系列
  • JavaScript系列
  • HTTP系列
  • GIT系列
  • ES6系列
  • 设计模式系列
  • CSS系列
  • 小程序系列
  • 数据结构与算法系列
  • React系列
  • Vue3系列
  • Vue系列
  • TypeScript系列
  • Webpack系列
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 浏览器

  • webpack

  • TypeScript

    • 一、类型基础
    • 二、数据类型
    • 三、接口
    • 四、类
    • 五、类与接口的关系
    • 六、泛型
    • 七、类型检查机制
    • 八、高级类型
    • 九、ES6与CommonJS的模块系统
    • 十、使用命名空间
    • 十一、声明合并
    • 十二、如何编写声明文件?
    • 十三、tsconfig配置
      • 文件相关选项的配置
      • 编译相关选项的配置
        • ts模块解析策略
      • 工程引用配置
        • 基础配置
        • 子工程配置
    • 十四、编译工具:从ts-loader到Bable
    • 十五、代码检查工具:从TSLint到ESLint
    • 十六、单元测试
    • 十七、TS在react中的使用
    • 什么是TypeScript?
  • 性能

  • 工程化

  • React

  • JavaScript

  • 编程题

  • React技术揭秘

  • 算法

  • 前端
  • TypeScript
chst365
2020-04-06
目录

十三、tsconfig配置

# 十三、tsconfig配置

# 文件相关选项的配置

// tsconfig.base

{
    // 需要编译的文件
    "files": [
        "src/a.ts"
    ], 
    
     /** 
     *    编译器需要编译的文件或者目录
     *    支持通配符
     *    src/* src下一级目录文件
     *          src下二级目录文件
     */
    "include": [
         "src"
    ],
     /** 
     *    编译器需要排除的文件或者文件夹
     *    ts默认会排除node-modules下的所有文件,及所有的声明文件
     */
    "exclude": [
         "src/lib"
    ]
}

// tsconfig

{
    "extends": "./tsconfig.base",
    "exclude": [],
    // 保存时,编译器自动编译,但是vscode暂不支持此功能
    "compileOnSave": true
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

# 编译相关选项的配置

{
    "extends": "./tsconfig.base",
    "exclude": [],
    // 保存时,编译器自动编译
    "compileOnSave": true,
    "compilerOptions": {
        // ts在第一次编译后,生成一个存储编译信息的文件,二次编译时,会根据这个文件做增量编译,这样可以提高编译速度
        // "incremental": true,                     // 增量编译
        // "tsBuildInfoFile": "./buildFile",                 // 增量编译文件的存储位置
        "diagnostics": true,                     // 打印诊断信息

        // "target": "es5",                         // 目标语言的版本
        // "module": "amd",                    // 生成代码的模块标准
        // "outFile": "./app.js",                         // 将多个相互依赖的文件生成一个文件,可以用在 AMD 模块中

        // "lib": ["dom", "es5", "scripthost", "es2019.array"],                               // TS 需要引用的库,即声明文件,es5 默认 "dom", "es5" , "scripthost"
        
        // "allowJs": true,                         // 允许编译 JS 文件(js、jsx)
        // "checkJs": true,                         // 允许在 JS 文件中报错,通常与 allowJS 一起使用
        // "outDir": "./out",                          // 指定输出目录
        // "rootDir": "./src",                         // 指定输入文件目录(用于输出)

        // "declaration": true,                     // 生成声明文件
        // "declarationDir": "./d",                 // 声明文件的路径
        // "emitDeclarationOnly": true,             // 只生成声明文件
        // "sourceMap": true,                       // 生成目标文件的 sourceMap
        // "inlineSourceMap": true,                 // 生成目标文件的 inline sourceMap
        // "declarationMap": true,                  // 生成声明文件的 sourceMap
        // "typeRoots": [],                         // 声明文件目录,默认 node_modules/@types
        // "types": [],                             // 声明文件包

        // "removeComments": true,                  // 删除注释

        // "noEmit": true,                          // 不输出文件
        // "noEmitOnError": true,                   // 发生错误时不输出文件

        // "noEmitHelpers": true,                   // 不生成 helper 函数,需额外安装 ts-helpers
        // "importHelpers": true,                   // 通过 tslib 引入 helper 函数,文件必须是模块

        // "downlevelIteration": true,              // 降级遍历器的实现 (es3/5)

        // "strict": true,                          // 开启所有严格的类型检查
        // "alwaysStrict": false,                   // 在代码中注入 "use strict"
        // "noImplicitAny": true,                   // 不允许隐式的 any 类型
        // "strictNullChecks": true,                // 不允许把 null、undefined 赋值给其他类型变量
        // "strictFunctionTypes": false,            // 不允许函数参数双向协变
        // "strictBindCallApply": true,             // 严格的 bind/call/apply 检查
        // "strictPropertyInitialization": true,    // 类的实例属性必须初始化
        // "noImplicitThis": false,                  // 不允许 this 有隐式的 any 类型
            
        // "noUnusedLocals": true,                  // 检查只声明,未使用的局部变量
        // "noUnusedParameters": true,              // 检查未使用的函数参数
        // "noFallthroughCasesInSwitch": true,      // 防止 switch 语句贯穿
        // "noImplicitReturns": true,               // 每个分支都要有返回值

        // "esModuleInterop": true,                 // 允许 export = 导出,由import from 导入
        // "allowUmdGlobalAccess": true,            // 允许在模块中访问 UMD 全局变量
        // "moduleResolution": "node",              // 模块解析策略
        // "baseUrl": "./",                         // 解析非相对模块的基地址
        // "paths": {},                             // 路径映射,相对于 baseUrl
        // "rootDirs": [],                          // 将多个目录放在一个虚拟目录下,用于运行时

        // "listEmittedFiles": true,                // 打印输出的文件
        // "listFiles": true,                       // 打印编译的文件(包括引用的声明文件)
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66

# ts模块解析策略

  • node解析策略 相对方式导入,会检查以下文件,如果都没有找到,会在moduleB目录下接着找,查找package.json 有没有types属性,如果没有则会查找index 非相对方式导入,会查找当前目录下的node_modules,依次解析,当前目录没有,就会向上查找,直至查到node_modules -w1384

  • classc解析策略 classc解析策略用于AMD | System | ES2015模块 相对导入,会依次解析下面的文件, 非相对方式导入,会从node_modules目录下查找,如果本级目录没有,就会向上查找 -w1390

TS默认使用node的解析策略

# 工程引用配置

# 基础配置

{
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "strict": true,
        // 工程可以被引用,可以进行增量编译
        "composite": true,
        // 生成声明文件,工程引用必须的
        "declaration": true
    }
}
1
2
3
4
5
6
7
8
9
10
11

# 子工程配置

<!--common-->
{
    "extends": "../../tsconfig.json",
    "compilerOptions": {
        "outDir": "../../dist/common"
    }
}
<!--client-->
{
    "extends": "../../tsconfig.json",
    "compilerOptions": {
        "outDir": "../../dist/client"
    },
    "references": [
        { "path": "../common" }
    ]
}
<!--server-->
{
    "extends": "../../tsconfig.json",
    "compilerOptions": {
        "outDir": "../../dist/server"
    },
    "references": [
        { "path": "../common" }
    ]
}
<!--test-->
{
    "extends": "../tsconfig.json",
    "references": [
        { "path": "../src/client" },
        { "path": "../src/server" }
    ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#语言#TypeScript
上次更新: 2021/04/22, 00:08:06
十二、如何编写声明文件?
十四、编译工具:从ts-loader到Bable

← 十二、如何编写声明文件? 十四、编译工具:从ts-loader到Bable→

最近更新
01
面试官
03-27
02
this&指针&作用域&闭包
03-27
03
前端
03-27
更多文章>
Theme by Vdoing | Copyright © 2019-2025 chst365 | 豫ICP备17031889号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式