在我的TypeScript项目中,我想使用Logdown

Logdown可以在Node.js应用程序中使用,如下所示:

var Logdown = require('logdown')
var logger = new Logdown({prefix: 'test'})
logger.info('Hello World');

不幸的是,Logdown不提供声明,因此我想编写一个声明文件。

为了启动这个小项目,我做了以下工作:
  • 我克隆了Logdown存储库
  • 我在克隆的Logdown存储库的package.json文件中创建了一个“typings”条目,并指出它可以执行dist/logdown.d.ts(根据“Including declarations in your npm package”)
  • 我将克隆的Logdown存储库作为npm软件包(npm link)本地提供
  • 我在TypeScript应用程序中运行了npm link logdown,以将此Node模块引用指向我的克隆存储库

  • 之后,我为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!');
    

    但是在编译项目时,出现以下错误:

    最佳答案

    我知道了:我需要在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;
    

    TypeScript应用程序(导入)
    import Logdown = require("logdown");
    ...
    let logger: Logdown = new Logdown();
    logger.info('Hello from Logdown!');
    

    10-08 09:34