【发布时间】:2018-04-17 23:47:14
【问题描述】:
我正在编写一个 npm 模块,一个简单的记录器。我是用纯 JS 写的:
logger.js
class Logger {
// stuff
}
module.exports = Logger;
在 js 脚本中,这可以正常工作:
logger-test.js
const Logger = require('ep-logger');
const logger = new Logger('my-logger');
logger.info('yo');
但我们公司使用 TypeScript。所以在我的logger.js 旁边,我创建了一个文件logger.d.ts,内容如下
export interface SplunkOptions {
endpoint?: string
loggingSource?: string
loggingSourceType?: string
}
export interface LoggerOptions {
stage?: string
level?: string
splunk?: SplunkOptions
}
export default class Logger {
constructor(name: string);
public static setOptions(obj: LoggerOptions): void;
public error(message: string | Error, ...data: any[]): void;
public warn(message: string | Error, ...data: any[]): void;
public info(message: string | Error, ...data: any[]): void;
public verbose(message: string | Error, ...data: any[]): void;
public debug(message: string | Error, ...data: any[]): void;
public silly(message: string | Error, ...data: any[]): void;
}
在我的package.json 中,我这样做了:
{
// more package.json stuff here
"main": "src/logger.js",
"types": "src/logger.d.ts"
}
现在在我的 TypeScript-项目中,我正在尝试使用我的记录器:
index.ts
import Logger from 'ep-logger';
const logger: Logger = new Logger('my-logger');
logger.info('yo');
但是我收到一个错误,我的记录器没有默认导出:
{ 错误:命令失败:ts-node local-lambda.ts --colors
/Users/luke/Arbeit/WeltN24/Editorial Products/projects/ep-logger-tests/js-app/yo-lambda/src/index.ts:5 const logger: Logger = new Logger('my-logger'); ^ TypeError:ep_logger_1.default 不是构造函数 ...
事实上,如果我这样做了
console.log(Logger);
我明白了
undefined
【问题讨论】:
标签: typescript typescript-typings