梗概:
运行了tsc --init
之后
在ts项目的根目录下, 会有一个tsconfig.json
的文件
一些重要配置项
1. module
如"module": "CommonJS"
, 编译出来的js采用CommonJS模块化规范
1.1. 说明:
- 其中值可以为ESnext
2. include和exclude
child::include和exclude配置项
3. compilerOptions配置项
child::
compilerOptions配置项
包含的重要配置项:
1. 目标版本:
- “module”: “目标版本” ^02h0wd
- 指定 ts 编译生成的 js 所使用的[use::JS的模块化规范]
- 但可能并不是严格转换:
- 如
module:"ESNext"
不会将require()转换,而且ES6模块化 ES module的语句也基本不变- 如
module: "commonjs"
会将所有的模块化语句都转化为CommonJS- “target”: “目标版本”
- 指定 ts 编译生成的 js 代码的语法版本, 如es6等…
- outfile: “目标地址”
- 将编译生成的所有js代码合为一个,输出到目标地址
- 将编译生成的所有类型声明文件合为一个,输出到目标地址
- 例如:outfile:”./index.js”,在根目录输出index.js和index.d.ts文件
2. 严格模式
- “strict”:ture或false
- child::JavaScript使用严格模式
生成类型声明文件
- declaration: true 编译的时候生成类型声明文件 ^d217c2
- 常常配合outfile选项使用,指定生成的位置
- emitDeclarationOnly: true 只生成类型声明文件
- 生成的类型声明文件同时会声明模块
- 模块的名字来自^415966的文件名
类型检查的配置
- lib: 字符串数组 ,表示ts进行类型检查的时候允许哪些运行时的类型
- 如果你的代码将在浏览器中运行,那么你可能需要包含 dom 库,它提供了浏览器 DOM API 的类型定义。
- 如果你的代码将在 Node.js 环境中运行,那么你可能需要包含 node 库,它提供了 Node.js API 的类型定义。
- 如果你的代码中使用了 Promise,那么你应该选择一个包含 Promise 类型定义的库,例如 es2015 或更高版本。配置npm包路径解析方式为COMMONJS
"moduleResolution": "node"
- 这样在ts中使用ES6模块化 ES module也能像CommonJS一样找到包
混合commonjs与ESM
moduleResolution: "nodenext"
- 需要ts 4.7版本以上!
实例
- 使用import语句导入cjs的库,编译生成require()
- 使用动态导入语句导入ES6模块化 ES module库,编译保留动态导入
路径解析
child::
指向原始笔记的链接路径解析
指向原始笔记的链接