有没有办法直接向纯javascript项目添加打字稿定义(.d.ts
文件)(例如在package.json
中)。我无法找到相关文档。
答案 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" />