Ben*_*uer 2 javascript commonjs node.js typescript typescript-typings
在我的TypeScript项目中,我想使用Logdown.
Logdown可以在Node.js应用程序中使用,如下所示:
var Logdown = require('logdown')
var logger = new Logdown({prefix: 'test'})
logger.info('Hello World');
Run Code Online (Sandbox Code Playgroud)
不幸的是,Logdown不提供声明,所以我想写一个声明文件.
为了启动这个小项目,我做了以下事情:
package.json克隆的Logdown存储库的文件中创建了一个"typings"条目并指出它dist/logdown.d.ts(根据" 在你的npm包中包含声明 ")npm link)npm link logdown在我的TypeScript应用程序中运行,将此Node模块引用指向我的克隆存储库之后我创建了logdown.d.ts文件的内容:
export declare class Logdown {
constructor(options: Object);
public info(text: string): string;
}
Run Code Online (Sandbox Code Playgroud)
我希望我现在可以在我的TypeScript项目中使用Logdown,如下所示:
import Logdown = require("logdown");
let logger: Logdown = new Logdown();
logger.info('Hello World!');
Run Code Online (Sandbox Code Playgroud)
但是当我编译项目时,我收到以下错误:
错误TS2304:找不到名称'Logdown'.
错误TS2351:对于类型缺少调用或构造签名的表达式,不能使用"new".
我得到了它的工作:我需要在我的TypeScript应用程序中将导出格式更改为export = Logdown;定义文件(.d.ts)和导入格式import Logdown = require("logdown");.
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;
Run Code Online (Sandbox Code Playgroud)
TypeScript应用程序(导入)
import Logdown = require("logdown");
...
let logger: Logdown = new Logdown();
logger.info('Hello from Logdown!');
Run Code Online (Sandbox Code Playgroud)