打字稿类型检查扩展类

时间:2016-05-27 15:23:10

标签: typescript angular

我需要将引用传递给从另一个类扩展的类。这是因为我有一个Angular 2模态服务,它将在给定时动态实例化组件。

模态服务基于传递的模态选项来执行此操作。其中一个选项是组件。我需要扩展这个组件,以确保传递的组件上有一些可以调用的方法。

我的模态选项类非常简单,如下所示:

export class ModalOptions {
    constructor(
        public component: typeof ModalClass,
        public title: string,
        public size: string = "med"
    ) { }
}

ModalClass是一个非常简单的类:

export class ModalClass {
    public ok(): Promise<void> {
        return Promise.resolve();
    }

    public cancel(): Promise<void> {
        return Promise.resolve();
    }
}

因此,如果我将此类扩展为如此组件:

@Component({
    moduleId: __moduleName,
    templateUrl: "...",
})
export class MyComponent extends ModalClass {
    public details: SomeType;

    constructor(
        // Stuff
    ) {
        super();
        this.details = //Stuff
    }

}

我希望能够用它构建一个模态选项对象并传递它。我希望能够检查ModalOptions中给出的组件,以确保它符合标准。

然而,虽然这适用于typescript playground,但Visual Studio中的Typescript根本不喜欢它并且不会编译。

"Argument of type 'typeof MyComponent' is not assignable to parameter of type 'typeof ModalClass'."

我有打字稿编译器版本1.8.10。

我该如何做到这一点?

感谢您的时间。

0 个答案:

没有答案