npm @types组织包中的TypeScript类型


135

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

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

它是要与打字工具分开使用吗?例如直接安装npm


11
谢谢你这个问题。
莱昂佩尔蒂埃

Answers:


109

从TypeScript 2.0开始,不再需要键入内容。npm组织是建立开发人员团队的实体。我相信Microsoft在npm中设置了@types组织,并将TypeScript开发人员团队添加到该组织中。在@types组织下软件包自动从DefinitelyTyped使用类型的出版商工具按已发布的文档

另外,还有另一种添加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,我没有得到任何结果。但是从Web界面进行搜索确实返回了结果。因此,我想npm search不会跨组织进行搜索。


好答案!进行较小的编辑会很好,但这在解释当前状态方面做得更好。
罗纳德·扎里茨(RonaldZarīts)2016年

由于您package.jsontypes属性下指定了一个文件,因此我注意到您在谈论捆绑的声明文件。在像gulp这样的自动构建系统中,最简单的方法是什么?
尼基

"main"如果主文件名为index.js,是否必须添加该字段?
克伦民族联盟

1
非常感谢这个“请注意,该"typings"字段是的同义词"types",也可以使用”
Serhii Popov

42

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

摘要:

@typesNPM组织是获得与类型定义npm。使用这些类型定义是TypeScript 2.0中的一项功能。

这将取代目前的工程/工具,如分型TSD,虽然这些会持续一段时间的支持。


1
嗨,罗恩,所以我试图进行这些设置,但是VSCode似乎没有意识到我已经安装了它们。使用core-jsw /之类的东西之后npm i @types/core-js --save,我可以看到它在文件夹中,但是项目仍然会因某些原因而引发错误。还有什么我应该做的吗?我是否需要让tsconfig注意@types或其他内容?就像肖恩(Sean)所说的那样,目前还没有关于类型的文档:(
马克·皮萨克

@MarkPieszak,您必须确保VSCode正在使用TS2.0。在此处查看如何在本地安装TypeScript并在VSCode中使用它:github.com/Microsoft/TypeScript/wiki/Nightly-drops
nino.porcino

是的,就是@ nino.porcino谢谢你:)tsdk需要指向TS的2.0beta版本安装
Mark Pieszak-Trilon.io 2016年

至少对于我们正在更新的某些团队项目(以及在我们看到的其他GH项目中),还应该tsconfig.json使用"types"列出这些模块名称的数组属性进行更新,例如"types": ["core-js"]
superjos

7

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

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


谢谢!这很有用,但我看不到GitHub问题讨论@types npm org。@types组织是否专门针对UMD /// <reference场景?TypeScript编译器会自动在下查找类型吗node_modules/@types(因为它在node_moduleswhen中查找模块'moduleResolution': 'node')?这意味着什么typings-它也处理环境依赖性。有什么关系吗?
罗纳德·扎里茨(RonaldZarīts)2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.