【问题标题】:TypeScript typings in npm @types org packagesnpm @types org 包中的 TypeScript 类型
【发布时间】:2016-09-29 14:32:24
【问题描述】:

我注意到有一个 npm 组织 @types,其中包含打字包,但找不到任何文档。这些是如何使用的?

它是否打算与typings 工具一起使用?如果是这样,如何安装它们?例如,有一个 @types/openlayers 包,但 typings search npm:openlayers 没有返回任何内容。

它是否意味着与打字工具分开使用?例如。直接用npm安装?

【问题讨论】:

  • 感谢您提出这个问题。

标签: typescript typescript-typings


【解决方案1】:

这将是 Typescript 2.0 中推出的一项功能。这为 UMD 模块/库及其各自的定义提供了类型支持。

请参阅 (Built-in support for UMD module definitions) 以更好地了解当前环境类型的问题。

【讨论】:

  • 谢谢!这很有用,但我没有看到讨论 @types npm org 的 GitHub 问题。 @types 组织是专门针对 UMD /// <reference 场景的吗? TypeScript 编译器会自动在node_modules/@types 下查找类型(就像在'moduleResolution': 'node' 时在node_modules 中查找模块一样)?这对typings 意味着什么 - 它还处理环境依赖项。有什么关系吗?
【解决方案2】:

TypeScript 博客上的公告回答了这个问题:The Future of Declaration Files

总结:

@types npm 组织用于使用npm 获取类型定义。使用这些类型定义是 TypeScript 2.0 中的一项功能。

这将取代当前的项目/工具,例如 typingstsd,尽管这些将在一段时间内继续得到支持。

【讨论】:

  • 嘿罗恩,所以我正在尝试进行这些设置,但似乎 VSCode 并没有意识到我已经安装了它们。在使用core-js w/npm i @types/core-js --save 之类的东西后,我可以看到它在文件夹中,但项目仍然会抛出错误。还有什么我应该做的吗?我是否需要让 tsconfig 知道@types 之类的?就像肖恩说的那样,还没有任何类型的文档:(
  • @MarkPieszak 您必须确保 VSCode 使用的是 TS2.0。在此处查看如何在本地安装 TypeScript 并在 VSCode 中使用它:github.com/Microsoft/TypeScript/wiki/Nightly-drops
  • 是的,就是 @nino.porcino,谢谢 :) tsdk 需要指向 TS 的 2.0beta 安装
  • 至少对于我们正在更新的一些团队项目(以及我们看到的其他 GH 项目),还应该使用列出这些模块名称的 "types" 数组属性来更新 tsconfig.json,例如"types": ["core-js"]
【解决方案3】:

从 TypeScript 2.0 开始,不再需要 typings。 npm 组织是建立开发团队的实体。我相信微软在 npm 中设置了 @types 组织,并将 TypeScript 开发人员团队添加到该组织中。 @types 组织下的包是根据 docs 使用 types-publisher 工具从 DefinitiveTyped 自动发布的。

此外,还有另一种方法可以将types 添加到您的包中:

在你的 package.json 中

如果您的包有一个主要的.js 文件,您还需要在您的package.json 文件中指明主要的声明文件。将types 属性设置为指向捆绑的声明文件。例如:

{
    "name": "awesome",
    "author": "Vandelay Industries",
    "version": "1.0.0",
    "main": "./lib/main.js",
    "types": "./lib/main.d.ts"
}

请注意,"typings" 字段与 "types" 同义,也可以使用。

还请注意,如果您的主声明文件名为 index.d.ts 并且位于包的根目录(index.js 旁边),则无需标记 "types" 属性,但建议这样做.

关于搜索类型

在大多数情况下,类型声明包的名称应始终与 npm 上的包名称相同,但以 @types/ 为前缀,但如果需要,您可以查看 https://aka.ms/types 以找到您喜欢的包图书馆。

来自 - http://www.typescriptlang.org/docs/handbook/declaration-files/consumption.html

但是当我做npm search @types/openlayers时,我没有得到任何结果。但是从网络界面进行搜索确实返回了结果。所以我猜npm search 不会跨组织搜索。

【讨论】:

  • 很好的答案!稍作修改会很好,但这可以更好地解释当前状态。
  • 由于您在package.json 属性下的package.json 中指定了一个文件,我注意到您说的是捆绑的声明文件。在像 gulp 这样的自动构建系统中实现这一目标的最简单方法是什么?
  • 如果 main 命名为 index.js,我是否必须添加 "main"field?
  • 非常感谢"注意"typings" 字段是"types" 的同义词,也可以使用"
猜你喜欢
  • 1970-01-01
  • 2016-12-29
  • 2019-02-22
  • 2023-02-17
  • 1970-01-01
  • 2018-07-11
  • 2017-04-14
  • 2019-01-03
  • 2017-05-19
相关资源
最近更新 更多