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
继承配置文件。