typescript 编译器的默认 lib 值是多少?

Cap*_*iel 6 typescript tsc

文档说默认--lib源自--target

注意:如果未指定 --lib ,则会注入默认的库列表。注入的默认库是:

  • 对于 --target ES5:DOM、ES5、ScriptHost
  • 对于 --target ES6:DOM、ES6、DOM.Iterable、ScriptHost

同一文档说默认--target值是ES3

指定 ECMAScript 目标版本:

  • “ES3”(默认)
  • “ES5”
  • “ES6”/“ES2015”
  • “ES2016”
  • “ES2017”
  • “ES2018”
  • “ES2019”
  • “ES2020”
  • “ES下一个”

那么...当既没有设置也没有设置--lib时默认值是多少?--lib--target

Mat*_*ley 3

在源代码中有一个受支持的库列表,其中有一个名为“默认库”的部分:

        // Default libraries
        "es5.full",
        "es2015.full",
        "es2016.full",
        "es2017.full",
        "es2018.full",
        "es2019.full",
        "es2020.full",
        "es2021.full",
        "esnext.full"
Run Code Online (Sandbox Code Playgroud)

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

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

/// <reference lib="es2017" />
/// <reference lib="dom" />
/// <reference lib="webworker.importscripts" />
/// <reference lib="scripthost" />
/// <reference lib="dom.iterable" />
Run Code Online (Sandbox Code Playgroud)

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

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