这是我的打字稿语言课程:
export interface ILogger {
bla bla
}
export class Logger implements ILogger {
bla bla
}
export var logger: ILogger = new Logger();
当我像这样使用这个类时:
logger: logger = new logger();
我收到此错误:
无效'新'表达
为什么会这样?
答案 0 :(得分:4)
类实例不可更新(new logger
)。它也不是有效的类型(:logger
)。样品
class Logger {
}
var logger = new Logger();
var logger2: logger = new logger(); // 2 errors
修正。你已经为logger
做了些什么。再做一次:
class Logger {
}
var logger = new Logger();
var logger2: Logger = new Logger();
答案 1 :(得分:1)
我创建了这样的类实例 -
说 logger.ts
export interface ILogger {
bla bla
}
export class Logger implements ILogger {
bla bla
}
export function getInstance() {
var instance = new Logger();
return instance;
}
然后,无论你需要记录器 -
import logger = require('./logger');
var mylogger = logger.getInstance();
答案 2 :(得分:1)
我同意Basarat - 如果你想要一个new
,你应该创建一个new Logger()
- 但如果你试图使用你导出的记录器的实例,你可以简单地使用它实例化它,因为你已经在这里做了......
export var logger: ILogger = new Logger();
所以你可以直接使用它(你还没有提供实施细节,所以我已经在这里制作了它们)......
// not logger: logger = new logger(); - just use it...
logger.methodName();