👉安装

1、执行安装命令

1
npm install -g typescript

2、检测安装是否成功

1
tsc -v

👉项目中使用

1、创建 tsconfig.json 配置文件

1
tsc --init

2、tsconfig.json

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
{
"compilerOptions": {

/**************基础配置**************/

/* 开启增量编译:TS 编译器在第一次编译的时候,会生成一个存储编译信息的文件,下一次编译的时候,会根据这个文件进行增量的编译,以此提高TS的编译速度 */
// "incremental": true,
/* 指定存储增量编译信息的文件位置 */
// "tsBuildInfoFile": "./",

/* 打印诊断信息 */
// "diagnostics": true,
/* 打印输出的文件 */
// "listEmittedFiles": true,
/* 打印编译的文件(包括引用的声明文件)*/
// "listFiles": true,

/* 指定 ECMAScript 的目标版本: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
// "target": "es5",
/* 指定模块代码的生成方式: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
// "module": "commonjs",

/* 指定要包含在编译中的库文件——引用类库——即申明文件,如果输出的模块方式是 es5,就会默认引入 "dom","es5","scripthost" */
/* 如果在 TS 中想要使用一些 ES6 以上版本的语法,就需要引入相关的类库 */
// "lib": [],

/* 允许编译 JS 文件 */
// "allowJs": true,
/* 检查 JS 文件*/
// "checkJs": true,

/* 指定 JSX 代码生成的模式: 'preserve', 'react-native', or 'react'. */
/* 'react' 模式下:TS 会直接把 jsx 编译成 js */
/* 'preserve' 模式下:TS 不会把 jsx 编译成 js,会保留 jsx */
// "jsx": "preserve",


/**************声明文件相关配置**************/

/* 生成相应的类型声明文件 —— '.d.ts' */
// "declaration": true,
/* 声明文件的输出路径 */
// "declarationDir": "./d",
/* 只生成声明文件,不生成 JS */
// "emitDeclarationOnly": true,
/* 声明文件目录,默认 node_modules/@types */
// "typeRoots": [],
/* 要导入的声明文件包,默认导入上面声明文件目录下的所有声明文件 */
// "types": [],


/* 将多个相互依赖的文件合并并且把编译后的内容输出到一个文件里
* 可以用在产出 AMD 模块的场景中
* "module":"amd" 时,当一个模块引入了另外一个模块,编译的时候会把这两个模块的编译结果合并到一个文件中
*/
// "outFile": "./",
/* 指定编译文件的输出目录 */
// "outDir": "./out",
/* 指定输入文件的根目录,用于控制输出目录的结构 */
// "rootDir": "./",

/* 启用项目编译 */
// "composite": true,

/* 输出的时候移除注释 */
// "removeComments": true,

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

/* 不生成 helper 函数,以前的话设置为 true 后,需要额外安装 ts-helpers */
/* 类似于 babel ,会给每个文件都生成 helper 函数,会使得最终编译后的包的体积变大 */
// "noEmitHelpers": true,
/* 现在可以通过 tslib(TS 内置的库)引入 helper 函数,!!!文件必须是模块 !!! */
/* 编译后自动引入 var tslib_1 = require("tslib") */
// "importHelpers": true,

/* 当目标是 ES5 或 ES3 的时候提供对 for-of、扩展运算符和解构赋值中对于迭代器的完整支持 */
// "downlevelIteration": true,

/* 把每一个文件转译成一个单独的模块 */
// "isolatedModules": true,


/**************严格检查配置**************/

/* 开启所有的严格检查配置 */
"strict": true,
/* 不允许使用隐式的 any 类型 */
// "noImplicitAny": true,

/* 不允许把 null、undefined 赋值给其他类型变量 */
// "strictNullChecks": true,

/* 不允许函数参数双向协变 */
// "strictFunctionTypes": true,

/* 使用 bind/call/apply 时,严格检查函数参数类型 */
// "strictBindCallApply": true,

/* 类的实例属性必须初始化 */
// "strictPropertyInitialization": true,

/* 不允许 this 有隐式的 any 类型,即 this 必须有明确的指向*/
// "noImplicitThis": true,

/* 在严格模式下解析并且向每个源文件中注入 "use strict" */
// "alwaysStrict": true,

/**************额外的语法检查配置,这种检查交给 eslint 就行,没必要配置**************/

/* 有未使用到的本地变量时报错 */
// "noUnusedLocals": true,

/* 有未使用到的函数参数时报错 */
// "noUnusedParameters": true,

/* 每个分支都要有返回值 */
// "noImplicitReturns": true,

/* 严格校验 switch-case 语法 */
// "noFallthroughCasesInSwitch": true,

/**************模块解析配置**************/

/* 指定模块的解析策略: 'node' (Node.js) or 'classic' (TypeScript pre-1.6)*/
/* 若未指定,那么在使用了 --module AMD | System | ES2015 时的默认值为 Classic,其它情况时则为 Node */
// "moduleResolution": "node",

/* 在解析非绝对路径模块名的时候的基准路径 */
// "baseUrl": "./",

/* 基于 'baseUrl' 的路径映射集合 */
// "paths": {},

/* 将多个目录放在一个虚拟目录下,用于运行时 */
/* 当自己编写的库和开发的代码都输出到一个目录下时,开发代码和库的位置不一样,开发代码引入库的路径就会不对 */
// "rootDirs": [],
// "rootDirs": ["src","out"],

/* 允许 export = xxx 导出 ,并使用 import xxx form "module-name" 导入*/
// "esModuleInterop": true,

/* 当模块没有默认导出的时候,允许被别的模块默认导入,这个在代码执行的时候没有作用,只是在类型检查的时候生效 */
// "allowSyntheticDefaultImports": true,


/* 不要 symlinks 解析的真正路径 */
// "preserveSymlinks": true,

/* 允许在模块中以全局变量的方式访问 UMD 模块内容 */
// "allowUmdGlobalAccess": true,


/************** Source Map 配置**************/

/* 指定 ts 文件位置 */
// "sourceRoot": "",

/* 指定 map 文件存放的位置 */
// "mapRoot": "",

/* 生成目标文件的 sourceMap */
// "sourceMap": true,

/* 将代码与sourcemaps生成到一个文件中,要求同时设置了--inlineSourceMap 或--sourceMap 属性*/
// "inlineSources": true,

/* 生成目标文件的 inline sourceMap —— 源文件和 sourcemap 文件在同一文件中,而不是把 map 文件放在一个单独的文件里*/
// "inlineSourceMap": true,

/* 生成声明文件的 sourceMap */
// "declarationMap": true,

/************** 实验性的配置**************/

/* 启用装饰器 */
// "experimentalDecorators": true,

// "emitDecoratorMetadata": true,


/**************高级配置**************/

/* 强制区分大小写 */
// "forceConsistentCasingInFileNames": true

}

/* 指定需要编译的单个文件列表 */
// "files": [],

/* 指定需要编译的文件/目录 */
// "include": [
// // 只写一个目录名等价于 "./src/**/*"
// "src"
// ]

/* 需要排除的文件或目录 */
// "exclude": []

/* 配置文件继承 */
// "extends": "./tsconfig.base.json"

}

3、监视 tsconfig.json

  • vscode -> 终端 -> 运行任务 -> typescript -> tsc: 构建 tsconfig.json