为啥我需要 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 套接字已关闭,尽管我还没有明确关闭它?

将BootstrapJS和AngularJS结合使用以及为啥不用jQuery

为啥 Angular 11 中的延迟加载组件是在新页面中加载的,而不是在侧边栏右侧的主页面中?