繁体   English   中英

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

[英]How to add a typescript definition file to a npm package?

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

TypeScript 手册中有一个页面介绍如何将类型添加到 NPM 包。 我将复制并粘贴到这里:

NPM 包的类型

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

尝试加载位于相应包文件夹 (node_modules/foo/) 中的 package.json 文件。 如果存在,请读取“类型”字段中描述的类型文件的路径。 例如,在下面的 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 文件
  • 写成外部模块
  • 不包含三斜杠引用

基本原理是类型不应将新的可编译项带入已编译文件集; 否则包中的实际实现文件可能会在编译期间被覆盖。 此外,加载类型不应通过引入来自同一库的不同版本的潜在冲突条目来污染全局范围

除非您在 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" />


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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM