【问题标题】:Type checking class (not instance of class) extends another class类型检查类(不是类的实例)扩展了另一个类
【发布时间】:2017-03-12 22:27:52
【问题描述】:

鉴于以下课程:

class BaseClass {}

我想创建另一个扩展这个类的类,即:

class ExtendedClass extends BaseClass {}

然后我想将 ExtendedClass 作为参数传递给另一个函数(不是 ExtendedClass 的实例,而是类本身!),并通过确保 @ 987654325@ 扩展 BaseClass

这不起作用:

function helloClass (c: BaseClass) {}

因为c: BaseClass 表示c 应该是BaseClass(或扩展BaseClass)的实例 - 但不是扩展BaseClass 本身的类。

在 TypeScript 中这完全可能吗?

【问题讨论】:

    标签: typescript


    【解决方案1】:

    您可以像这样表示类:{ new(): BaseClass }

    或者举个例子:

    interface BaseClassConstructor<T extends BaseClass> {
        new (): T;
    }
    
    class BaseClass {
        str: string;
    }
    
    class ExtendedClass extends BaseClass { }
    
    function fn<T extends BaseClass>(ctor: BaseClassConstructor<T>) {
    
    }
    
    fn(BaseClass); // fine
    fn(ExtendedClass); // fine
    
    class A {
        prop: any;
    }
    
    fn(A);  // error
    

    (code in playground)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      • 2013-05-24
      • 1970-01-01
      • 2021-02-03
      • 1970-01-01
      • 2015-08-02
      • 1970-01-01
      相关资源
      最近更新 更多