如何将一个打字稿定义文件添加到npm包中?

Mic*_*arf 13 npm typescript

有没有办法直接将打字稿定义(.d.ts文件)添加到纯JavaScript项目(例如package.json).我找不到任何相关的文档.

rgv*_*sar 14

TypeScript手册中有一个页面,用于向NPM包添加类型.我会在这里复制并粘贴:

NPM包的类型

TypeScript编译器通过遵循Node.js模块解析算法来解析节点模块名称.TypeScript还可以加载与npm包捆绑在一起的打字.编译器将尝试使用以下规则集来发现模块"foo"的类型:

尝试加载位于相应包文件夹(node_modules/foo /)中的package.json文件.如果存在,请阅读"typings"字段中描述的typings文件的路径.例如,在下面的package.json中,编译器将解析node_modules/foo/lib/foo.d.ts中的类型.

{
    "name": "foo",
    "author": "Vandelay Industries",
    "version": "1.0.0",
    "main": "./lib/foo.js",
    "typings": "./lib/foo.d.ts"
}
Run Code Online (Sandbox Code Playgroud)

尝试加载位于包文件夹(node_modules/foo /)中名为index.d.ts的文件 - 此文件应包含包的类型.

模块分辨率的精确算法可以在这里找到.

你的定义文件应该

  • be.d.ts文件
  • 写成外部模块
  • 不包含三斜杠引用

理由是,打字不应该将新的可编辑项目带入编译文件集; 否则在编译期间可以覆盖包中的实际实现文件.此外,加载类型不应通过从同一库的不同版本引入可能存在冲突的条目来污染全局范围.

  • 我回答问题的时候是“打字”。这是[存档](https://web.archive.org/web/20160412204540/https://www.typescriptlang.org/docs/handbook/typings-for-npm-packages.html)。另外,从当前文档来看:“请注意,“typings”字段与“types”同义,也可以使用。” (3认同)
  • 谢谢你的背影故事.在线所有当前的例子都使用`types`.如果您还没有,请考虑更新您的答案. (3认同)
  • 似乎应该是“类型”而非“类型”。 (2认同)
  • 我没有将字段从“typings”更改为“types”,因为当前文档表明它们是同义词。我们有另一个使用“类型”的答案。我更喜欢两个不同的答案都有效,而不是两个被编辑为相同的答案。 (2认同)

Sag*_*agi 6

types除非您使用package.json 中的属性,否则 Visual Studio 2015 将无法识别定义文件
https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html

{
   "name": "awesome",
   "author": "Vandelay Industries",
   "version": "1.0.0",
   "main": "./lib/main.js",
   "types": "./lib/main.d.ts"
}
Run Code Online (Sandbox Code Playgroud)

*您必须在 ts 文件中使用三个斜杠包含引用路径。
/// <reference path="../node_modules/../lib/main.d.ts" />


对于登陆这里并想要将类型链接到他们的 npm 包的其他人来说,一个方便的教程可能会有所帮助!