现有节点模块的 TypeScript 定义文件
TypeScript definition file for existing node module
在我的 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
)
- 我 运行
npm link logdown
在我的 TypeScript 应用程序中将此 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!');
但是当我编译项目时,出现以下错误:
error TS2304: Cannot find name 'Logdown'.
error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
我成功了:我需要将定义文件 (.d.ts
) 中的导出格式更改为 export = Logdown;
,并将我的 TypeScript 应用程序中的导入格式更改为 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!');
在我的 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
) - 我 运行
npm link logdown
在我的 TypeScript 应用程序中将此 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!');
但是当我编译项目时,出现以下错误:
error TS2304: Cannot find name 'Logdown'.
error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
我成功了:我需要将定义文件 (.d.ts
) 中的导出格式更改为 export = Logdown;
,并将我的 TypeScript 应用程序中的导入格式更改为 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!');