149

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

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

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

4

3 回答 3

117

从 TypeScript 2.0 开始,不再需要打字。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不会跨组织搜索。

于 2016-10-12T12:32:29.380 回答
44

TypeScript 博客上的公告回答了这个问题:声明文件的未来

概括:

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

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

于 2016-06-16T07:41:11.293 回答
8

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

请参阅(对 UMD 模块定义的内置支持)以更好地了解当前环境类型的问题。

于 2016-06-07T16:51:14.947 回答