TypeScript. Наследование от класса с generic

TypeScript. Мне нужно, чтобы SomeController был построен на базе BaseController со спецификой некоторого типа SomeModel. Пробовал сделать как-то так:

class SomeModel {
    static methodOfModel() {}
}
class BaseController <T> {
    index() {
        T.methodOfModel()   
     // SomeModel.methodOfModel() works
    }
}
class SomeController extends BaseController<SomeModel> {}
new SomeController()

Получаю ошибку 'T' only refers to a type, but is being used as a value here.


Ответы (1 шт):

Автор решения: Cat Grey

Решил вопрос так:

class SomeModel {
    static methodOfModel() {}
}
class BaseController {
    someModel: typeof SomeModel
    constructor(someModel: typeof SomeModel){
        this.someModel = someModel
    }
    index() {
        this.someModel.methodOfModel()   
    }
}
class SomeController extends BaseController {
    constructor() {
        super(SomeModel)
    }
}
new SomeController()
→ Ссылка