tsConfig 配置
00 分钟
2024-7-5
2024-7-5
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。
classicnode两种解析规则的不同:
假设用户主目录下有一个ts-test的项目,里面有一个src目录,src目录下有一个a.ts文件,即/Users/**/ts-test/src/a.ts
  • classic模块解析规则:
      1. 对于相对路径模块: 只会在当前相对路径下查找是否存在该文件(.ts文件),不会作进一步的解析,如”./src/a.ts”文件中,有一行import { b } from "./b",那么其只会检测是否存在"./src/b.ts",没有就算找不到。
      1. 对于非相对路径模块: 编译器则会从包含导入文件的目录开始依次向上级目录遍历尝试定位匹配的ts文件或者d.ts类型声明文件,如果/Users/**/ts-test/src/a.ts文件中有一行import { b } from "b",那么其查找过程如下:
    • node模块解析规则:
        1. 对于相对路径模块:除了会在当前相对路径下查找是否存在该文件(.ts文件)外,还会作进一步的解析,如果在相对目录下没有找到对应的.ts文件,那么就会看一下是否存在同名的目录,如果有,那么再看一下里面是否有package.json文件,然后看里面有没有配置,main属性,如果配置了,则加载main所指向的文件(.ts或者.d.ts),如果没有配置main属性,那么就会看一下目录里有没有index.ts或者index.d.ts,有则加载。
        1. 对于非相对路径模块: 对于非相对路径模块,那么会直接到a.ts所在目录下的node_modules目录下去查找,也是遵循逐层遍历的规则,查找规则同上,同上node模块解析规则查找如下:

      baseUrl

      拓展引入非相对模块时的查找路径的。其默认值就是”./“
      如果编译器在node_modules中没有找到引入模块情况下,还会到baseUrl中指定的目录下查找是否存在该模块。
      所以需要借助第三方解决:

      path

      配合baseUrl一起使用相对于baseUrl所在的路径的,主要用于到baseUrl所在目录下查找的时候进行的路径映射

      rootDirs

      虚拟目录
      上一篇
      TypeScript Class(类)
      下一篇
      TypeScript 类型操作