什么是打字稿`--lib`库文件?

什么是打字稿`--lib`库文件?

问题描述:

is a similar question。这涵盖了打字稿对该选项的作用。下面的问题和答案涵盖了lib文件在运行时的来源。什么是打字稿`--lib`库文件?

当我抬起头的--lib编译器选项它说的描述:被列入汇编

的库文件列表。

什么是这些库文件,它们是如何包含的?我正在学习的存储库具有以下设置?

"compilerOptions": { 
    "target": "es5", 
    "module": "es2015", 
    "lib": ["es2015", "dom"] 
}, 

将如何输出有所不同,如果--lib中,没有设置["es2015", "dom"]

+0

可能的重复[什么tsconfig选项“lib”做?](http://stackoverflow.com/questions/39303385/what-does-the-tsconfig-option-lib-do) – Louis

+0

该问题有一个范围更广。 @Meirion Hughes能够以简短的答案提供简单的见解,而无需链接到一篇很长的文章,所以我将保持原样。 – Ole

他们告诉打字稿编译器,这些类型库在运行时可用,并且不会抱怨您的目标es版本缺少功能。

你的配置是针对es5,但你告诉打字稿“es2015”功能将可用 - 例如Promise和Map。同样,你有“dom”,所以打字稿知道你有window和browser-dom功能。

据我所知,它不会改变输出......当您试图使用目标es版本中不存在的功能时,typescript将仅仅是错误。

当你想要定位旧的浏览器时,你会这样做,但也想使用,例如Promises。因此,我们告诉编译器可以使用lib:["es2015.promise"],然后在执行时运行类似core-jsbluebird的多边形填充Promise功能。

+0

好极了!我目前正在关注Angular4,它看起来像默认包含core-js,所以我认为es2015的功能将在所有实现中被覆盖(而dom自然被浏览器覆盖)。虽然基于这篇文章,我正在阅读http://blog.mgechev.com/2017/01/21/distributing-an-angular-library-aot-ngc-types/我们不应该直接触摸dom ...那么包含dom是个好主意吗?这可能是一个不同的问题。 – Ole

+0

从技术上讲,操纵dom是Angular应该做的事情...所以是的,你可能想尝试没有“dom”类型,这样你就不会自己去尝试做什么。 –

+0

这就是我的想法 - 但作者说,这不是一个好主意,包括它...所以我想我会在这里跟进,看看是否有任何案件:http://stackoverflow.com/questions/ 43786728 /应最打字稿-LIB-设置-DOM待包括-当显影-AN-角度-4-C – Ole