【问题标题】: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 编译器本身无法识别。

这,作为一个新手,我不是很清楚。

【问题讨论】:

  • 以上问题是关于将模块导入项目的问题。我之前用过 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 文件。

标签: json angular typescript typescript-typings


【解决方案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
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多