2016-05-13 50 views

回答

9

TypeScript Handbook中有一个页面为NPM包添加类型。我会复制和粘贴在这里:

分型为NPM套餐

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

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

{ 
    "name": "foo", 
    "author": "Vandelay Industries", 
    "version": "1.0.0", 
    "main": "./lib/foo.js", 
    "typings": "./lib/foo.d.ts" 
} 

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

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

你的定义文件应该

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

的理由是该类型不应将新的可编译项目带入编译文件集合;否则在编译期间可能会覆盖程序包中的实际实现文件。此外,加载类型不应该污染全球范围通过从相同的库的不同版本带来可能冲突的条目。除非你的package.json使用types财产

+1

似乎它应该'类型'不''typings'。 –

+0

当我回答这个问题时,这是'typings'。这是[档案](https://web.archive.org/web/20160412204540/https://www.typescriptlang.org/docs/handbook/typings-for-npm-packages.html)。另外,从当前的文档:'请注意,“typings”字段与“types”同义,并且可以使用.' – rgvassar

+0

感谢您的背后故事。目前所有的例子都使用'types'。如果您还没有,请考虑更新您的答案。 –

1

的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" />

+0

从您提供的链接中获得:'请注意,“类型”字段与“类型”同义,也可以使用。 – Izhaki

相关问题