Skip to content

Commit 65346ed

Browse files
committed
Improve create_view return type
Signed-off-by: martinRenou <[email protected]>
1 parent 753d639 commit 65346ed

File tree

3 files changed

+7
-6
lines changed

3 files changed

+7
-6
lines changed

packages/base-manager/src/manager-base.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@ export abstract class ManagerBase<T> implements IWidgetManager {
8989
* Make sure the view creation is not out of order with
9090
* any state updates.
9191
*/
92-
create_view(model: DOMWidgetModel, options: any): Promise<DOMWidgetView>;
93-
create_view(model: WidgetModel, options = {}): Promise<WidgetView> {
92+
create_view<VT extends DOMWidgetView = DOMWidgetView>(model: DOMWidgetModel, options?: any): Promise<VT>;
93+
create_view<VT extends WidgetView = WidgetView>(model: WidgetModel, options = {}): Promise<VT> {
9494
const viewPromise = model.state_change = model.state_change.then(() => {
9595
return this.loadClass(model.get('_view_name'),
9696
model.get('_view_module'),

packages/base/src/manager.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,8 @@ interface IWidgetManager {
170170
* Make sure the view creation is not out of order with
171171
* any state updates.
172172
*/
173-
create_view(model: DOMWidgetModel, options?: unknown): Promise<DOMWidgetView>;
174-
create_view(model: WidgetModel, options?: unknown): Promise<WidgetView>;
173+
create_view<VT extends DOMWidgetView = DOMWidgetView>(model: DOMWidgetModel, options?: unknown): Promise<VT>;
174+
create_view<VT extends WidgetView = WidgetView>(model: WidgetModel, options?: unknown): Promise<VT>;
175175

176176
/**
177177
* callback handlers specific to a view

packages/base/src/widget.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -691,9 +691,10 @@ class WidgetView extends NativeView<WidgetModel> {
691691
/**
692692
* Create and promise that resolves to a child view of a given model
693693
*/
694-
create_child_view(child_model: WidgetModel, options = {}): Promise<DOMWidgetView> {
694+
create_child_view<VT extends DOMWidgetView = DOMWidgetView>(child_model: WidgetModel, options?: any): Promise<VT>;
695+
create_child_view<VT extends WidgetView = WidgetView>(child_model: WidgetModel, options = {}): Promise<VT> {
695696
options = { parent: this, ...options};
696-
return this.model.widget_manager.create_view(child_model, options)
697+
return this.model.widget_manager.create_view<VT>(child_model, options)
697698
.catch(utils.reject('Could not create child view', true));
698699
}
699700

0 commit comments

Comments
 (0)