跳到主要内容

tsconfig.json

compilerOptions​

strict​

严格模式。开启时会自动设置几个相关的flag,如strictNullChecks: true

outDir​

编译产物的输出目录

outFile​

根据多个源文件生成一个产物。如果源文件是模块而不是脚本(即使用了import或export),那么开启outFile的同时还需要指定module: 'amd' | 'system' 。

我们可以搭配declaration: true来生成一份包括各个模块导出类型的声明文件。

declaration​

生成声明文件.d.ts。

emitDeclarationOnly​

只生成声明文件,不生成任何JavaScript文件。

sourceMap​

生成sourceMap。

noEmit​

不生成编译产物。

allowJs​

允许在程序中使用JavaScript文件,比如我们甚至可以在A.ts中引入B.js。

checkJs​

在allowJs: true的基础上,开启checkJs会在编译时检查JavaScript的语法错误。

target​

编译产物JavaScript的目标版本。如指定es5会把源代码中的箭头函数转化为普通函数。

指定target字段的同时会自动设置对应的lib。

lib​

指定库的声明文件。如lib: ["dom", "esnext"]则包含了DOM元素的类型和诸多JS内置对象和函数的类型。(这些声明文件被存放在node_modules/typescript/lib下)

skipLibCheck​

跳过对所有声明文件d.ts的类型检查。

module​

指定编译产物JavaScript所采用的模块类型,如commonJs、es6、esnext等。

moduleResolution​

模块解析策略。通常为node,即采取和Node一致的模块解析策略。

noResolve​

TypeScript默认会解析import或/// <reference />引用的文件,将其纳入整个程序当中,通过noResolve可以关闭这个过程。

baseUrl​

当指定baseUrl时,绝对路径是相对于baseUrl的。

如当给定"baseUrl": "./src"时, import A from 'lib/test' 实际表达的是./src/lib/test

​

paths​

设置路径的映射关系,通常在开启了webpack的resolve.alias时需要进行设置

{
"paths": {
"@test/*": ["./src/test/*"],
"jquery": ["node_modules/jquery/dist/jquery"] // This mapping is relative to "baseUrl"
},
}

types​

指定第三方库的声明文件,如@types/react、@types/react-dom、@types/node,默认情况node_modules/@types下所有库都是生效的。

{
"types": [], // 只让具体的几个库生效
"typeRoots": ["node_modules/@types"],
}

esModuleInterop​

模块互通。

allowSyntheticDefaultImports​

允许从没有设置默认导出的模块中默认导入,esModuleInterop: true时默认开启

isolatedModules​

开启时,被编译的所有文件必须是模块(import/export)而不能是脚本

noEmitOnError​

编译错误时不生成产物。

noImplicitAny​

不允许隐式any类型

strictNullChecks​

严格的空值检测。

let str: string = undefined // 不开启严格模式的话这行代码能通过
let str: string | undefined // 通常需要这样写

files​

指定待编译的文件。

includes​

指定待编译文件的目录。

exclude​

指定哪些文件不被编译,默认值包括node_modules等。

extends​

继承配置文件。