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

时间:2016-05-13 12:26:46

标签: typescript npm

有没有办法直接向纯javascript项目添加打字稿定义(.d.ts文件)(例如在package.json中)。我无法找到相关文档。

2 个答案:

答案 0 :(得分:13)

TypeScript Handbook中有一个页面,用于向NPM包添加打字。我将复制并粘贴到这里:

  

NPM包的类型

     

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

     

尝试加载位于相应包文件夹(node_modules / foo /)中的package.json文件。如果存在,请阅读" 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"
}
  

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

     

可以在此处找到模块分辨率的精确算法。

     

您的定义文件

     
      
  • be.d.ts files
  •   
  • 被写为外部模块
  •   
  • 不包含三斜杠参考
  •   
     

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

答案 1 :(得分:2)

除非您使用package.json中的types属性,否则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"
}

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