如何在npm包中添加一个typescript定义文件?

mzillmmw  于 2023-03-30  发布在  TypeScript
关注(0)|答案(2)|浏览(134)

有没有一种方法可以直接将typescript定义(.d.ts文件)添加到纯javascript项目中(例如在package.json中)。我找不到任何相关文档。

r8xiu3jd

r8xiu3jd1#

TypeScript Handbook中有一个关于将类型添加到NPM包的页面。我将复制并粘贴在这里:

NPM包的类型

TypeScript编译器通过遵循Node.js模块解析算法来解析Node模块名称。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文件
  • 作为外部模块编写
  • 不包含三斜杠引用

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

c3frrgcw

c3frrgcw2#

除非在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包的人,一个方便的**tutorial**可能会有帮助!

相关问题