interface ViewOptions { model: TModel; } class View { constructor(options: ViewOptions) { } model: TModel; } class Model { } class MyView extends View { } var m: ViewOptions = { model: new Model() }; var aView = new View({ model: new Model() }); var aView2 = new View(m); var myView = new MyView(m); // was error