有没有一种方法可以直接将typescript定义(.d.ts文件)添加到纯javascript项目中(例如在package.json中)。我找不到任何相关文档。
.d.ts
package.json
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处的类型
foo
node_modules/foo/
typings
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的文件-此文件应包含软件包的类型。模块解析的精确算法可以在这里找到。
index.d.ts
您的定义文件需要
基本原理是类型不应将新的可编译项带到已编译文件集;否则包中的实际实现文件可能会在编译过程中被覆盖。此外,加载类型不应污染全局范围,因为它可能会带来来自同一库的不同版本的冲突条目。
c3frrgcw2#
除非在package.json中使用types属性,否则Visual Studio 2015将无法识别定义文件https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html
types
{ "name": "awesome", "author": "Vandelay Industries", "version": "1.0.0", "main": "./lib/main.js", "types": "./lib/main.d.ts" }
/// <reference path="../node_modules/../lib/main.d.ts" />对于其他登陆这里并想要将类型链接到他们的npm包的人,一个方便的**tutorial**可能会有帮助!
/// <reference path="../node_modules/../lib/main.d.ts" />
2条答案
按热度按时间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
处的类型尝试加载位于软件包文件夹(
node_modules/foo/
)中名为index.d.ts
的文件-此文件应包含软件包的类型。模块解析的精确算法可以在这里找到。
您的定义文件需要
.d.ts
文件基本原理是类型不应将新的可编译项带到已编译文件集;否则包中的实际实现文件可能会在编译过程中被覆盖。此外,加载类型不应污染全局范围,因为它可能会带来来自同一库的不同版本的冲突条目。
c3frrgcw2#
除非在package.json中使用
types
属性,否则Visual Studio 2015将无法识别定义文件https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html
/// <reference path="../node_modules/../lib/main.d.ts" />
对于其他登陆这里并想要将类型链接到他们的npm包的人,一个方便的**tutorial**可能会有帮助!