我正在使用一些在私有存储库中提供的NPM模块(非类型JS)。我无法获取源代码或修改它(它仅在CI服务器上可用)。但我有很好的API文档。
我相信如果我可以为这些库编写一些d.ts文件会很有帮助,但经过几天的互联网搜索后,我找不到有关如何将d.ts文件放在远离原始JS文件的指南
这可能吗?
例如,我有以下文件:
[1] /proj/node_modules/priv-lib/index.js (READONLY)
[2] /proj/src/my.ts
[3] /proj/src/declarations/priv-lib.d.ts
虽然文件[1]的API如下(在JS使用中):
const privLib = require('priv-lib')
privLib(xxx) // itself is a function
privLib.anotherFn(yyy)
privLib.someConstant
我想在文件[3]中为文件[1]编写声明,然后在文件[2]中使用它。
好的,现在我有了一个可能的解决方案:
// [3] /proj/src/declarations/priv-lib.d.ts
declare module 'priv-lib' {
function privLib(xxx: any): any
namespace privLib {
function anotherFn(yyy: any): any
const someConstant: string
}
export = privLib
}
然后
// [2] /proj/src/my.ts
import privLib = require('priv-lib')
privLib(1)
privLib.anotherFn(2)
privLib.someConstant
似乎不需要///<reference />
我不知道这是否是正确的方法(至少没有副作用,也没有弃用)。
答案 0 :(得分:0)
你所做的是正确的。如果您使用TypeScript&lt; 2.0你需要一个///<reference />
。
如果您使用的是TypeScript&gt; = 2.0,则在某些情况下您不需要///<reference />
:
@types/priv-lib
可用作npm模块priv-lib
包括typigns
因为情况并非如此,您需要///<reference />
。