首页 > 解决方案 > 如何为扩展基类的类(不是实例)创建类型?

问题描述

请参阅下面我想要的问题标题和伪代码。如何替换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.

标签: typescript

解决方案


您可以使用这样的类型:{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()

推荐阅读