文件相关选项的配置
// 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}
编译相关选项的配置
{"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, // 打印编译的文件(包括引用的声明文件)}}
ts模块解析策略
node解析策略
相对方式导入,会检查以下文件,如果都没有找到,会在moduleB目录下接着找,查找package.json 有没有types属性,如果没有则会查找index
非相对方式导入,会查找当前目录下的node_modules,依次解析,当前目录没有,就会向上查找,直至查到node_modules

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

TS默认使用node的解析策略
工程引用配置
基础配置
{"compilerOptions": {"target": "es5","module": "commonjs","strict": true,// 工程可以被引用,可以进行增量编译"composite": true,// 生成声明文件,工程引用必须的"declaration": true}}
子工程配置
<!--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" }]}
