У меня есть предопределенный интерфейс:

export declare interface Type<T> extends Function {
    new (...args: any[]): T;
}

Я хотел бы иметь атрибут класса, который ограничивает универсальный тип. Что-то вроде этого:

public componentType: Type<any extends MyComponentType>;

Является ли это возможным ? Потому что я не нашел решения в Typescript doc и не могу найти работающий синтаксис.

Спасибо.

0
MHogge 18 Фев 2020 в 18:55

2 ответа

Лучший ответ

Ответ - комментарий, сделанный @Josh Wulf к оригинальному сообщению.

public componentType: Type<MyComponentType>
0
MHogge 19 Фев 2020 в 08:24

Делает ли это то, что вы хотите

export declare interface Type<A,T extends A = A> extends Function {
    new (...args: any[]): T;
}

class MyComponentType {

}

class MyComponentType2 extends MyComponentType{

}

class foo {
    public componentType: Type<MyComponentType>;

    constructor() {
        this.componentType = MyComponentType2;
    }
}
0
rkesters 18 Фев 2020 в 17:30