网站搜索

typescript - 抽象类上的抽象静态方法


我记得能够为一个抽象类提供接口,类似这样,但我在网上找不到那段代码。我在这里无法做到吗:

interface AbstractParent { 
  staticMember: () => boolean
}

abstract class AbstractParent {  
  static example() { 
    return this.staticMember()
  }
}

class Utilize extends AbstractParent {  
  static staticMember() { 
    return true
  }
}

console.log(Utilize.example())

操场

抽象类可以要求有静态方法吗?

答案#1

你也可以尝试将 this.staticMember() 替换为 Utilize.staticMember():Playground

理想情况下,你希望使用 static abstract staticMember。但不幸的是,它尚不支持,而且似乎没有好的方法来实现这一点。

查看我们的这些讨论:

  • 建议:在类中添加抽象静态方法,在接口中添加静态方法
  • static abstract 方法和属性
  • 允许为类的静态部分指定接口实现子句

答案#2

这可以正常工作,但不能确保 Utilize 实现了 staticMember 方法。

abstract class AbstractParent {  
  static staticMember: () => boolean
  static example() { 
    return this.staticMember()
  }
}

class Utilize extends AbstractParent {  
  static staticMember() { 
    return true
  }
}

console.log(Utilize.example())