打字稿编译器的默认 lib 值是多少?

What is the typescript compiler's default lib value?

documentation 表示 --lib 默认来自 --target

Note: If --lib is not specified a default list of libraries are injected. The default libraries injected are:

  • For --target ES5: DOM,ES5,ScriptHost
  • For --target ES6: DOM,ES6,DOM.Iterable,ScriptHost

同样的文档说默认的--target值是ES3:

Specify ECMAScript target version:

  • "ES3" (default)
  • "ES5"
  • "ES6"/"ES2015"
  • "ES2016"
  • "ES2017"
  • "ES2018"
  • "ES2019"
  • "ES2020"
  • "ESNext"

那么...当 --lib--target 都未设置时,--lib 默认值是多少?

在源代码中有一个 list of supported libs,其中有一个名为“默认库”的部分:

        // Default libraries
        "es5.full",
        "es2015.full",
        "es2016.full",
        "es2017.full",
        "es2018.full",
        "es2019.full",
        "es2020.full",
        "es2021.full",
        "esnext.full"

这些与您的目标设置相对应。

查看其中一个 (lib.es2017.full.d.ts) 的源代码,您可以看到它导入的内容:

/// <reference lib="es2017" />
/// <reference lib="dom" />
/// <reference lib="webworker.importscripts" />
/// <reference lib="scripthost" />
/// <reference lib="dom.iterable" />

仅供参考,所有语言级别都导入以前的语言。例如:es2018 导入 es2017,es2017 导入 es2016,es2015 导入 es2015,es2015 导入 es5。 “es6”是独一无二的,因为没有任何东西导入它。

源代码中似乎没有“es3”lib 文件,所以我没有答案。尝试设置 noLib,看看有什么问题,然后在下面发表评论。