非常教程

Typescript参考手册

声明文件 | Declaration Files

Publishing

现在您已经按照本指南的步骤撰写了一个声明文件,现在是发布到npm的时候了。有两种主要的方式可以将您的声明文件发布到npm:

  1. 与你的npm软件包捆绑在一起,或者

2. 在npm上发布到@types组织。

如果你控制npm包你发布声明,那么第一种方法是有利的。这样,你的声明和JavaScript总是一起旅行。

在你的npm包中包含声明

如果你的软件包有一个主.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管理。确保你所依赖的所有声明包"dependencies"在你的部分都有相应的标记package.json。例如,假设我们创作了使用Browserify和TypeScript的包。

{
  "name": "browserify-typescript-extension",
  "author": "Vandelay Industries",
  "version": "1.0.0",
  "main": "./lib/main.js",
  "types": "./lib/main.d.ts",
  "dependencies": {
    "browserify": "latest",
    "@types/browserify": "latest",
    "typescript": "next"
  }
}

在这里,我们的软件包取决于browserifytypescript软件包。browserify不会将其声明文件与其npm包捆绑在一起,所以我们需要依赖@types/browserify它的声明。typescript另一方面,打包它的声明文件,所以不需要任何额外的依赖关系

我们的软件包公开了来自每个软件包的声明,因此我们browserify-typescript-extension软件包的任何用户也需要具备这些相关性。出于这个原因,我们使用了,"dependencies"而不是"devDependencies",因为否则我们的消费者将需要手动安装这些包。如果我们刚刚编写了一个命令行应用程序,并且不希望我们的软件包被用作库,那么我们可能会使用它devDependencies

红旗

/// <reference path="..." />

不要/// <reference path="..." />你的声明文件。

/// <reference path="../typescript/lib/typescriptServices.d.ts" />
....

不要使用/// <reference types="..." />来代替。

/// <reference types="typescript" />
....

请确保重新访问Consuming dependencies部分以获取更多信息。

打包依赖声明

如果你的类型定义依赖于另一个包:

  • 不要将它与你的文件结合起来,将它们保存在自己的文件中。
  • 不要将声明复制到你的包中。
  • 不要依赖于NPM类型声明包,如果它不打包的声明文件。

发布到@types

@types组织下的软件包使用types-publisher工具从DefinitelyTyped自动发布。要将您的声明发布为@types包,请向https://github.com/DefinitelyTyped/DefinitelyTyped提交拉取请求。您可以在贡献指南页面找到更多详细信息。

Typescript

TypeScript 是 JavaScript 的类型的超集,它可以编译成纯 JavaScript。编译出来的 JavaScript 可以运行在任何浏览器上。

主页 https://www.typescriptlang.org
源码 https://github.com/Microsoft/TypeScript
发布版本 2.6.0