type
status
date
slug
summary
tags
category
icon
password
rootDir
importHelpers
downlevelIteration
迭代器降级:这个选项时为了在旧版 Javascript 运行时上更准确的实现现代 JavaScript 迭代器的概念。
es6 增加了几个迭代器:for…of [a,…b] Symbol.iterator
如果
Symbol.iterator
(es5引入了Symbol.iterator) 存在的话,--downlevelIteration
将允许在 ES5 环境更准确的使用这些迭代原语。比如:某些特殊的字符串( emoji 😈 ),它的length为2或者更多,但在for..of中只迭代一次,但编译成ES5之后,按照索引迭代,迭代了多次。
当启用downlevelIteration时,TypeScript 将会使用辅助函数来检查
Symbol.iterator
的实现(无论是原生实现还是 polyfill)。 如果没有实现,则将会回退到基于索引的迭代。注意:当不存在Symbol.iterator时候没有任何帮助。
strictFunctionTypes
moduleResolution
这个是用于配置模块的解析规则,主要有两种,分别为classic和node。
默认值为:
module ==="amd" or "system" or "es6" or "es2015"?"classic" : "node"。
所以其默认值和
module
的配置有关联,module
的默认值又和target
有关,如果target
默认值为ES3,那么module
的默认值为commonjs
,所以moduleResolution
的默认值为node。classic
和node
两种解析规则的不同:假设用户主目录下有一个ts-test的项目,里面有一个src目录,src目录下有一个a.ts文件,即
/Users/**/ts-test/src/a.ts
- classic模块解析规则:
- 对于相对路径模块: 只会在当前相对路径下查找是否存在该文件(.ts文件),不会作进一步的解析,如”./src/a.ts”文件中,有一行
import { b } from "./b"
,那么其只会检测是否存在"./src/b.ts"
,没有就算找不到。 - 对于非相对路径模块: 编译器则会从包含导入文件的目录开始依次向上级目录遍历,尝试定位匹配的ts文件或者d.ts类型声明文件,如果
/Users/**/ts-test/src/a.ts
文件中有一行import { b } from "b"
,那么其查找过程如下:
- node模块解析规则:
- 对于相对路径模块:除了会在当前相对路径下查找是否存在该文件(.ts文件)外,还会作进一步的解析,如果在相对目录下没有找到对应的.ts文件,那么就会看一下是否存在同名的目录,如果有,那么再看一下里面是否有package.json文件,然后看里面有没有配置,main属性,如果配置了,则加载main所指向的文件(.ts或者.d.ts),如果没有配置main属性,那么就会看一下目录里有没有index.ts或者index.d.ts,有则加载。
- 对于非相对路径模块: 对于非相对路径模块,那么会直接到a.ts所在目录下的node_modules目录下去查找,也是遵循逐层遍历的规则,查找规则同上,同上node模块解析规则查找如下:
baseUrl
拓展引入非相对模块时的查找路径的。其默认值就是”./“
如果编译器在node_modules中没有找到引入模块情况下,还会到baseUrl中指定的目录下查找是否存在该模块。
所以需要借助第三方解决:
path
配合baseUrl一起使用,相对于baseUrl所在的路径的,主要用于到baseUrl所在目录下查找的时候进行的路径映射
rootDirs
虚拟目录
- 作者:小白
- 链接:https://xiaobai-notes.top/article/ts-template-5
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。