Q:

Assigning child class to a parent class typed property

I do have the following 2 base clases:
class BaseModel {}

class BaseService{
  protected model:BaseModel;
}

Now I want to implement BaseHelper and BaseService for a specific use case and assign a derived class to my property.
class MyModel extends BaseModel{
  constructor(param:string){
    super();
  }
}

class MyService extends BaseService {
  model = MyModel;  
}

However, this gives me the error Type 'typeof MyModel' is not assignable to type 'BaseModel'. 
Important: I want to attach the class MyModel, not an instance of the class MyModel!

A:

You need to instantiate MyModel using the new keyword (new MyModel()).
You assigned the actual class (model = MyModel) instead of an instance of it.
Also, you might want to make BaseService generic:
class BaseModel {}

class BaseService<T extends BaseModel> {
    protected model: T;

    constructor(model: T) {
        this.model = model;
    }
}

class MyModel extends BaseModel{}

class MyService extends BaseService<MyModel> {
    constructor() {
        super(new MyModel());
    }
}

(code in playground)

Edit
If you need the class and not the instance, then something like:
class BaseModel {}

type BaseModelConstructor = { new(): BaseModel };

class BaseService {
    protected modelCtor: BaseModelConstructor;
}

class MyModel extends BaseModel {}

class MyService extends BaseService {
    modelCtor = MyModel;  
}

(code in playground)
Or you can use generics here as well:
class BaseModel {}

type BaseModelConstructor<T extends BaseModel> = { new(): T };

class BaseService<T extends BaseModel> {
    protected modelCtor: T;
}

class MyModel extends BaseModel {}

class MyService extends BaseService<BaseModel> {
    modelCtor = MyModel;  
}

(code in playground)

If your derived classes have different ctor signatures then you can either deal with it in the base ctor type:
type BaseModelConstructor<T extends BaseModel> = { new(...args: any[]): T };

Here you can pass any count and kind of parameters, but you can also supply different signatures:
type BaseModelConstructor<T extends BaseModel> = { 
    new(): T;
    new(str: string): T;
    new(num: number, bool: boolean): T;
};

But you can also use a different type per derived class:
type MyModelConstructor = { new(param: string): MyModel };

