tsconfig 选项“lib”有啥作用?
Posted
技术标签:
【中文标题】tsconfig 选项“lib”有啥作用?【英文标题】:What does the tsconfig option "lib" do?tsconfig 选项“lib”有什么作用? 【发布时间】:2017-01-11 05:14:31 【问题描述】:我有一个在 tsconfig.json 中有这一行的现有项目:
lib:["2016", "DOM"]
这样做的目的是什么?
我能找到的唯一信息是:
指定要包含在编译中的库文件。需要 TypeScript 2.0 或更高版本。
这是什么意思?
【问题讨论】:
这能回答你的问题吗? What does the TypeScript "lib" option really do? 【参考方案1】:这是一个新的 typescript 2 功能,因此它仍然缺少文档,但您可以在 What's new in Typescript 2.0 中阅读它:
使用 --lib 可以指定内置 API 声明组的列表 您可以选择包含在您的项目中。例如,如果你 期望您的运行时支持 Map、Set 和 Promise(例如 今天大多数常青浏览器),只包括 --lib es2015.collection,es2015.promise。同样,您可以排除 您不想包含在项目中的声明,例如DOM 如果 您正在使用 --lib es5,es6 处理节点项目。
还有一个受支持的API groups
列表以及该链接中的一个非常简短的示例。
【讨论】:
我的意思是当我指定 "lib": ["es5"] 时,是否仅仅意味着我可以在ts
中使用 es5
类型来抱怨编译器,或者某种类型的 poly-填充将由tsc
提供?
不同的库可以在这里找到:github.com/Microsoft/TypeScript/tree/master/lib 它们是编译器使用的定义文件
我明白了,谢谢,所以这基本上意味着,如果我指定 "lib": ["es5"]
而不指定“dom”,tsc
会抱怨使用 DOM 特定方法,对吗?跨度>
请注意,包含“es2015.promise”或其他任何内容都不会在您的编译代码中包含 polyfill。相反,您只需通知编译器您的代码正在使用 Promise,这应该没问题。如果您需要添加 Promise polyfill,请考虑在代码中导入 polyfill 或使用带有相应机制的 babel (babel-preset-env) 作为后期步骤(或 webpack 中的下一个加载器)
这些团体向编译器做出承诺,“请不要抱怨这些 API,我保证浏览器会支持它们。”例如。如果添加es6
并且不包含polyfills,旧的浏览器会卡住。以上是关于tsconfig 选项“lib”有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章
es6 和 es2017 之间 tsconfig.json 中“lib”属性的区别?
安卓系统/system/lib/目录下libcutils.so这个文件有啥作用?