什么是打字稿`--lib`库文件?
有is a similar question。这涵盖了打字稿对该选项的作用。下面的问题和答案涵盖了lib
文件在运行时的来源。什么是打字稿`--lib`库文件?
当我抬起头的--lib
编译器选项它说的描述:被列入汇编
的库文件列表。
什么是这些库文件,它们是如何包含的?我正在学习的存储库具有以下设置?
"compilerOptions": {
"target": "es5",
"module": "es2015",
"lib": ["es2015", "dom"]
},
将如何输出有所不同,如果--lib
中,没有设置["es2015", "dom"]
?
他们告诉打字稿编译器,这些类型库在运行时可用,并且不会抱怨您的目标es版本缺少功能。
你的配置是针对es5
,但你告诉打字稿“es2015”功能将可用 - 例如Promise和Map。同样,你有“dom”,所以打字稿知道你有window
和browser-dom功能。
据我所知,它不会改变输出......当您试图使用目标es版本中不存在的功能时,typescript将仅仅是错误。
当你想要定位旧的浏览器时,你会这样做,但也想使用,例如Promises。因此,我们告诉编译器可以使用lib:["es2015.promise"]
,然后在执行时运行类似core-js
或bluebird
的多边形填充Promise功能。
好极了!我目前正在关注Angular4,它看起来像默认包含core-js,所以我认为es2015的功能将在所有实现中被覆盖(而dom自然被浏览器覆盖)。虽然基于这篇文章,我正在阅读http://blog.mgechev.com/2017/01/21/distributing-an-angular-library-aot-ngc-types/我们不应该直接触摸dom ...那么包含dom是个好主意吗?这可能是一个不同的问题。 – Ole
从技术上讲,操纵dom是Angular应该做的事情...所以是的,你可能想尝试没有“dom”类型,这样你就不会自己去尝试做什么。 –
这就是我的想法 - 但作者说,这不是一个好主意,包括它...所以我想我会在这里跟进,看看是否有任何案件:http://stackoverflow.com/questions/ 43786728 /应最打字稿-LIB-设置-DOM待包括-当显影-AN-角度-4-C – Ole
可能的重复[什么tsconfig选项“lib”做?](http://stackoverflow.com/questions/39303385/what-does-the-tsconfig-option-lib-do) – Louis
该问题有一个范围更广。 @Meirion Hughes能够以简短的答案提供简单的见解,而无需链接到一篇很长的文章,所以我将保持原样。 – Ole