不使用配置文件
- 在命令中指定输入文件
tsc app.ts
- 添加 -w 参数,持续监控文件变化并自动编译
tsc app.ts -w
使用配置文件
概述
如果一个目录下存在一个 tsconfig.json 文件,那么意味着这个目录是 TypeScript 项目的根目录。tsconfig.json 文件中指定了用来编译这个项目的文件和编译选项。使用 tsconfig.json 可通过以下方式编译:
- 不带任何输入文件的情况下调用 tsc,编译器会从当前目录开始去查找 tsconfig.json 文件,逐级向上搜索父目录。
- 不带任何输入文件的情况下调用 tsc,且使用命令行参数 --project(或-p)指定一个包含 tsconfig.json 文件的目录。
当命令行上指定了输入文件时,tsconfig.json 文件会被忽略。
示例
tsconfig.json 示例文件
{
"compilerOptions": {
"module": "commonjs",
"strict": true,
"removeComments": true,
"preserveConstEnums": true,
"outDir": "dist"
},
"include": ["src/**/*"],
"exclude": ["node_modules"]
}
"include" 和 "exclude" 属性指定一个文件 glob 匹配模式列表。 支持的 glob 通配符有:
*
匹配 0 或多个字符(不包括目录分隔符)
?
匹配一个任意字符(不包括目录分隔符)
**/
递归匹配任意子目录
如果一个 glob 模式里的某部分只包含 *
或 .*
,那么仅有支持的文件扩展名类型被包含在内(比如默认.ts
,.tsx
,和.d.ts
,如果 allowJs 设置为 true 还包含.js
和.jsx
)。
部分 compilerOptions 属性
"compilerOptions" 可以被忽略,这时编译器会使用默认值。在这里查看完整的编译器选项列表。
编译选项 |
类型 |
默认值 |
描述 |
target |
string |
"ES3" |
指定 ECMAScript 目标版本。 |
module |
string |
target === "ES6" ? "ES6" : "commonjs" |
指定生成哪个模块系统代码。 |
outDir |
string |
|
重定向输出目录。 |
allowJs |
boolean |
false |
允许编译 javascript 文件。 |
checkJs |
boolean |
false |
在 .js 文件中报告错误。与 allowJs 配合使用。 |
removeComments |
boolean |
false |
删除所有注释,除了以 /!* 开头的版权信息。 |
noEmit |
boolean |
false |
不生成输出文件。 |
noEmitOnError |
boolean |
false |
报错时不生成输出文件。 |
alwaysStrict |
boolean |
false |
以严格模式解析并为每个目标文件生成 "use strict" 语句。 |
noImplicitAny |
boolean |
false |
在表达式和声明上有隐含的 any 类型时报错。 |
noImplicitThis |
boolean |
false |
当 this 表达式的值为 any 类型的时候报错。 |
strictNullChecks |
boolean |
false |
在严格的 null 检查模式下,null 和 undefined 值不包含在任何类型里,只允许用它们自己和 any 来赋值(有个例外,undefined 可以赋值到 void)。 |
strict |
boolean |
false |
启用所有严格类型检查选项。启用 strict 相当于启用 noImplicitAny, noImplicitThis, alwaysStrict, strictNullChecks, strictFunctionTypes, strictPropertyInitialization。 |