tsconfig选项"lib"有什么作用?

Gre*_*Gum 103 typescript

我有一个在tsconfig.json中有这一行的现有项目:

lib:["2016", "DOM"]
Run Code Online (Sandbox Code Playgroud)

这样做的目的是什么?

我能找到的唯一信息是:

指定要包含在编译中的库文件.需要TypeScript版本2.0或更高版本.

那是什么意思?

Nit*_*mer 64

这是一个新的打字稿2功能,所以它仍然没有文档,但你可以在Typescript 2.0的新功能中阅读它:

使用--lib,您可以指定可以选择包含在项目中的内置API声明组列表.例如,如果您希望运行时支持Map,Set和Promise(例如今天大多数常绿浏览器),只需包含--lib es2015.collection,es2015.promise.类似地,您可以排除您不希望包含在项目中的声明,例如DOM,如果您正在使用--lib es5,es6处理节点项目.

还有一个API groups受支持的列表,以及该链接中的一个非常简短的示例.

  • 我的意思是当我指定"lib":["es5"]时,它是否意味着我可以在`ts`中使用`es5`类型抱怨编译器,或者`tsc`将提供某种poly-fill. ? (19认同)
  • 这些小组向编译器做出了承诺,“请不要抱怨这些API,我保证浏览器会支持它们。” 例如,如果您添加`es6`并且_不包含polyfills_,则旧的浏览器将会阻塞。 (11认同)
  • 请注意,包括"es2015.promise"或任何不包含polyfill到您的编译代码.相反,您只需通知编译器您的代码正在使用promises,它应该没问题.如果您需要添加promises polyfill,请考虑在代码中导入polyfill或使用带有相应机器的babel(babel-preset-env)作为后续步骤(或webpack中的下一个加载器) (9认同)
  • 可以在这里找到不同的库:https://github.com/Microsoft/TypeScript/tree/master/lib它们是编译器使用的定义文件 (8认同)
  • 我明白了,谢谢,所以这基本上意味着,如果我指定``lib':["es5"]`并且不指定"dom",`tsc`会抱怨使用DOM特定方法,对吗? (4认同)
  • @SteveClay你的解释很简单,就像我5岁一样,我一定会理解的!谢谢! (4认同)
  • 是的,可能 我没有尝试过 (2认同)