我正在学习Visual Studio 2017中的node.js.
我在这个类中有一个名为“logger.ts”的文件:
export default class Logger {
log(data)
{
console.log(data);
}
}
然后我尝试在我的节点项目中使用它:
declare var require;
var Logger = require('./logger.js');
var anInstance = new Logger();
anInstance.log('test');
我收到错误“Logger不是函数”。
我该怎么做?
答案 0 :(得分:1)
我认为您遇到的问题是如何导入Logger。声明var是不必要的,您不需要指定文件扩展名。在服务器端代码中尝试以下操作。
var Logger = require('./logger');
var anInstance = new Logger();
anInstance.log('test');
答案 1 :(得分:1)
由于这是打字稿,我应该使用@FabianLauer建议的打字稿样式。
export class Logger {
log(data)
{
console.log(data);
}
}
然后导入它:
import { Logger } from "./logger";
var anInstance = new Logger();
anInstance.log('test');
我认为导入会有所不同,因为这是node.js,但它与客户端应用程序完全相同。
答案 2 :(得分:1)
TypeScript提供import statements,它基于ES 2015 language specification。
在您的情况下,您可以像这样使用它:
// logger.ts
export class Logger { ... }
// main.ts
import { Logger } from "./logger";
var a = new Logger();
a.log('test');
当您使用default export
时,您不需要导入语句中的大括号:
// logger.ts
export default class Logger { ... }
// main.ts
import Logger from "./logger";
您还可以合并default
和非默认导出,如下所示:
// logger.ts
export class Logger { ... }
export default Logger;
// example1.ts
import Logger from "./logger"; // works
// example2.ts
import { Logger } from "./logger"; // works too