typescript - 如何为扩展基类的类(不是实例)创建类型?
问题描述
请参阅下面我想要的问题标题和伪代码。如何替换any?最好不要通过制作一些巨大的手动联合类型。
abstract class Letter {}
class A extends Letter {}
class B extends Letter {}
class C extends Letter {}
// potentially hundreds more "letters"
type LetterClass = any
const exampleUsage: LetterClass[] = [A, B, C]
尝试使用 typeof
type LetterClass = typeof Letter
const letters: LetterClass[] = [A, B, C]
const sample = letters[0]
new sample() // Cannot create an instance of an abstract class.
解决方案
您可以使用这样的类型:{new(): Letter}
. 完整示例:
abstract class Letter {}
class A extends Letter {}
class B extends Letter {}
class C extends Letter {}
// potentially hundreds more "letters"
type LetterClass = {new(): Letter}
const letters: LetterClass[] = [A, B, C]
const sample = letters[0]
new sample()
推荐阅读
- angular - 角度4后方法
- matlab - Matlab将变量从一个回调传递到另一个
- c# - Q : WMP 不随机播放基于列表框的选定项目
- mongodb - 等待其他部署开始运行,然后才能创建其他部署?
- vba - MS Word / OpenXML:提取语法和拼写错误
- angular - 在我的模板中,值不会重新加载
- azure - 无法连接到 Azure VM。CredSSP 问题
- azure-data-factory - item() 名称中的数据工厂查找(点)
- scala - 对 ObjectType 和 InputObjectType 使用相同的对象
- rsync - rsync 无法解析主机名