我试图使用此代码:
function singleton<T extends { new() }>(constructor: T): T {
return new constructor()
}
@singleton
export default class SomeClass {
constructor() {}
public method(): string {
return 'Hello!'
}
}
console.log(SomeClass.method())
它有效。消息&#34;您好!&#34;显示在控制台中。但是打字稿编译器说错误:
出了什么问题?
答案 0 :(得分:1)
不幸的是,编译器无法知道装饰器对类的更改。你可以尝试这样的事情:
function singleton<T>(constructor: new ()=> T): T {
return new constructor()
}
export const SomeClass = singleton(class {
constructor() {}
public method(): string {
return 'Hello!'
}
});
console.log(SomeClass.method())
答案 1 :(得分:0)
只需在类声明前使用 new
:
export default new class {
constructor() {}
public method(): string {
return 'Hello!'
}
});