为啥我需要 Angular 2 项目中的 `typings.json` 文件?
Posted
技术标签:
【中文标题】为啥我需要 Angular 2 项目中的 `typings.json` 文件?【英文标题】:Why do i need `typings.json` file in an Angular 2 project?为什么我需要 Angular 2 项目中的 `typings.json` 文件? 【发布时间】:2017-01-18 20:32:25 【问题描述】:为什么我需要typings.json
,如下所示:
"globalDependencies":
"core-js": "registry:dt/core-js#0.0.0+20160725163759",
"jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
"node": "registry:dt/node#6.0.0+20160831021119"
对于 Angular2 项目?我有:
typings.json 为库提供额外的定义文件 TypeScript 编译器本身无法识别。
这,作为一个新手,我不是很清楚。
【问题讨论】:
可能会有帮助:***.com/questions/34660265/… 以上问题是关于将模块导入项目的问题。我之前用过 npm 作为包管理器,所以我明白他的问题是什么。我不明白的是为什么我在 Angular2 项目中需要一个 typings.json。看起来该文件将 typescript 映射到某些第三方库的确切版本。 这不是使用类型的唯一方法。这个文件的一般目的是告诉 Typescript 从 javascript 的角度来看,在全局范围内有一些可用的东西,这意味着即使在编译时这个对象对 Typescript 不可见,执行期间也不会出现错误。例如:declare var module: id: string ;
表示有一个对象module
具有属性id
在纯javascript 中的某处实现。
观看此视频。您可以从 5:00 左右开始youtube.com/watch?v=4i1nLrqMR14
谢谢车。我想我找到了为什么我们需要 typings.json 文件。
【参考方案1】:
所以,我发现了这个:
任何 JavaScript 库,例如 jQuery、Jasmine 测试库和 Angular,都使用 TypeScript 编译器本身无法识别的特性和语法来扩展 JavaScript 环境。当编译器无法识别某些内容时,它会抛出一个错误。
所以,如果我们与 TypeScript 一起编写了一个可供其他人在他们的项目中使用的库,TypeScript 会抛出一个错误。要解决它,我们必须在库目录中写入TypeScript type definition files (.d.ts files)。
AngularJS 以及大多数已经这样做的库。但是,像“core-js”和“jasmine”这样的库在它们的 npm 包中不包含 d.ts 文件。幸运的是,他们的作者或社区贡献者已经为这些库创建了单独的 .d.ts
文件,并将它们发布在众所周知的位置。打字工具可以为您找到并获取这些文件。
所以,我们必须编写typings.json
文件来获取正确的类型定义文件才能顺利运行项目。
【讨论】:
注意:typings.json
已被弃用,取而代之的是来自 DefinatelyTyped 的 @types 包。见npmjs.com/package/typings以上是关于为啥我需要 Angular 2 项目中的 `typings.json` 文件?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 Angular 8 项目在安装 Angular 10 cli 后无法启动?
为啥我需要清理缓存才能看到我的 Angular 应用程序中的最新模块?
为啥 Angular Universal 中的 res.render 需要这么长时间?
为啥我的 Angular 2 应用程序中的 Web 套接字已关闭,尽管我还没有明确关闭它?