Skip to content

Commit 140bef1

Browse files
Lightning00BladeDevtools-frontend LUCI CQ
authored andcommitted
[cleanup] Reuse Constructor type
Bug: none Change-Id: Ie452be4bb9f47e3166b4ccd6deacd71c13408b4f Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6446593 Auto-Submit: Nikolay Vitkov <[email protected]> Reviewed-by: Benedikt Meurer <[email protected]> Commit-Queue: Benedikt Meurer <[email protected]>
1 parent 2026667 commit 140bef1

File tree

5 files changed

+12
-17
lines changed

5 files changed

+12
-17
lines changed

front_end/core/common/Object.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ export class ObjectWrapper<Events> implements EventTarget<Events> {
113113

114114
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
115115
export function eventMixin<Events, Base extends Platform.Constructor.Constructor<object>>(base: Base) {
116-
console.assert(base !== (HTMLElement as Platform.Constructor.Constructor<object>));
116+
console.assert(base !== HTMLElement);
117117
return class EventHandling extends base implements EventTarget<Events> {
118118
#events = new ObjectWrapper<Events>();
119119

front_end/core/platform/Constructor.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
export type Constructor<T> = new (...args: any[]) => T;
6-
7-
export type AbstractConstructor<T> = (abstract new (...args: any[]) => T);
5+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
6+
export type Constructor<T, Args extends any[] = any[]> = new (...args: Args) => T;
7+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
8+
export type AbstractConstructor<T, Args extends any[] = any[]> = (abstract new (...args: Args) => T);
89

910
export type ConstructorOrAbstract<T> = Constructor<T>|AbstractConstructor<T>;

front_end/testing/DOMHelpers.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
* Note that `resetTestDOM` is automatically run before each test (see `test_setup.ts`).
1010
**/
1111

12+
import type * as Platform from '../core/platform/platform.js';
1213
import type * as NodeText from '../ui/components/node_text/node_text.js';
1314
import * as UI from '../ui/legacy/legacy.js';
1415

@@ -88,28 +89,25 @@ export const cleanTestDOM = async () => {
8889
await raf();
8990
};
9091

91-
interface Constructor<T> {
92-
new(...args: unknown[]): T;
93-
}
94-
9592
/**
9693
* Asserts that all emenents of `nodeList` are at least of type `T`.
9794
*/
9895
export function assertElements<T extends Element>(
99-
nodeList: NodeListOf<Element>, elementClass: Constructor<T>): asserts nodeList is NodeListOf<T> {
96+
nodeList: NodeListOf<Element>,
97+
elementClass: Platform.Constructor.Constructor<T>): asserts nodeList is NodeListOf<T> {
10098
nodeList.forEach(e => assert.instanceOf(e, elementClass));
10199
}
102100

103101
export function getElementWithinComponent<T extends HTMLElement, V extends Element>(
104-
component: T, selector: string, elementClass: Constructor<V>) {
102+
component: T, selector: string, elementClass: Platform.Constructor.Constructor<V>) {
105103
assert.isNotNull(component.shadowRoot);
106104
const element = component.shadowRoot.querySelector(selector);
107105
assert.instanceOf(element, elementClass);
108106
return element;
109107
}
110108

111109
export function getElementsWithinComponent<T extends HTMLElement, V extends Element>(
112-
component: T, selector: string, elementClass: Constructor<V>) {
110+
component: T, selector: string, elementClass: Platform.Constructor.Constructor<V>) {
113111
assert.isNotNull(component.shadowRoot);
114112
const elements = component.shadowRoot.querySelectorAll(selector);
115113
assertElements(elements, elementClass);

front_end/ui/legacy/RootView.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export class RootView extends VBox {
2323
}
2424
this.window = document.defaultView;
2525
this.doResize();
26-
this.show((document.body as Element));
26+
this.show(document.body);
2727
}
2828

2929
override doResize(): void {

front_end/ui/legacy/Widget.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,12 +153,8 @@ export class WidgetElement<WidgetT extends Widget&WidgetParams, WidgetParams = o
153153

154154
customElements.define('devtools-widget', WidgetElement);
155155

156-
interface Constructor<T, Args extends unknown[]> {
157-
new(...args: Args): T;
158-
}
159-
160156
export function widgetRef<T extends Widget, Args extends unknown[]>(
161-
type: Constructor<T, Args>, callback: (_: T) => void): ReturnType<typeof Lit.Directives.ref> {
157+
type: Platform.Constructor.Constructor<T, Args>, callback: (_: T) => void): ReturnType<typeof Lit.Directives.ref> {
162158
return Lit.Directives.ref((e?: Element) => {
163159
if (!(e instanceof HTMLElement)) {
164160
return;

0 commit comments

Comments
 (0)