类型为属性的打字稿类方法

时间:2019-01-17 10:45:56

标签: typescript

我的打字稿代码有一个小bug(?)。 请参阅以下内容:

class Component {
    assertBoolean(): boolean {
       return true;
    }
}

class DummyComponent extends Component() {
}

const components: Component[] = [ DummyComponent ];

我遇到以下打字错误:

  

错误TS2322:类型'typeof DummyComopnent'无法分配给类型   类型“ typeof”中缺少“组件”属性“ assertBoolean”   DummyComponent”。

我真的不知道我在做什么错,基本的OOP。

1 个答案:

答案 0 :(得分:5)

您没有实例化该类。 DummyComponent表示在表达式中使用的类本身,而不是类的实例。要实例化该类,您需要使用new运算符:

class Component {
    assertBoolean(): boolean {
    return true;
    }
}

class DummyComponent extends Component {
}

const components: Component[] = [ new DummyComponent() ];

要保留一组类,您需要使用typeof Component。这代表了类的类型(不是类的实例)

const components: (typeof Component)[] = [DummyComponent];
new components[0]()