现有节点模块的TypeScript定义文件
在我的TypeScript项目中,我想使用Logdown 。
Logdown可以在Node.js应用程序中使用,如下所示:
var Logdown = require('logdown') var logger = new Logdown({prefix: 'test'}) logger.info('Hello World');
不幸的是,Logdown不提供声明,所以我想写一个声明文件。
为了启动这个小项目,我做了以下工作:
- 我克隆了Logdown资源库
- 我在克隆的Logdown仓库的
package.json
文件中创build了一个“typings”条目,并指出它是否执行dist/logdown.d.ts
(根据“ 在npm包中包含声明 ”) - 我使用克隆的Logdown版本库作为npm包(
npm link
) - 我在TypeScript应用程序中运行
npm link logdown
,将这个Node模块引用指向我的克隆库
之后,我创build了logdown.d.ts
文件的内容:
export declare class Logdown { constructor(options: Object); public info(text: string): string; }
我希望我现在可以在我的TypeScript项目中使用Logdown:
import Logdown = require("logdown"); let logger: Logdown = new Logdown(); logger.info('Hello World!');
但是,当我编译项目,我得到以下错误:
错误TS2304:找不到名称“Logdown”。
错误TS2351:不能对types缺less调用或构造签名的expression式使用“新”。
我得到它的工作:我需要更改导出格式export = Logdown;
在定义文件( .d.ts
)和导入格式中import Logdown = require("logdown");
在我的TypeScript应用程序中。
Logdown.d.ts(导出定义)
declare class Logdown { constructor(options?: Object); public log(...args: string[]): void; public info(...args: string[]): void; public warn(...args: string[]): void; public debug(...args: string[]): void; public error(...args: string[]): void; public static disable(...args: string[]): void; public static enable(...args: string[]): void; } export = Logdown;
TypeScript应用程序(导入)
import Logdown = require("logdown"); ... let logger: Logdown = new Logdown(); logger.info('Hello from Logdown!');