打字稿中的单身人士装饰

时间:2017-09-04 15:50:53

标签: javascript typescript singleton decorator

我试图使用此代码:

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;显示在控制台中。但是打字稿编译器说错误:enter image description here

出了什么问题?

2 个答案:

答案 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!'
  }
});