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这个文件有啥作用?

TypeScript 学习笔记总结

TypeScript 学习笔记总结

tsconfig 模块选项 - 'System' 是指 SystemJS 吗?

C++,链接时出错。用 scons 构建