Skip to content

Commit 44e3006

Browse files
Lightning00BladeDevtools-frontend LUCI CQ
authored andcommitted
[eslint] Prefer TypeScript interface over type aliases.
We have a mix of `type` and `interface` usage throughout our codebase, that is sometimes difficult to follow and reason about. We should follow the suggestion from the TypeScript PM and use `interface` consistently where possible. This leads to better type display in errors and makes our codebase easier to read (b/c consistency). This CL adds the `@typescript-eslint/consistent-type-definitions` ESLint rule to accomplish this. Fixed: 387237537 Change-Id: Idb9e8275ddd8f633021d6cf1c933e2e55f980e45 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6152576 Auto-Submit: Nikolay Vitkov <nvitkov@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
1 parent 845513d commit 44e3006

233 files changed

Lines changed: 1694 additions & 1616 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎eslint.config.mjs‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,8 @@ export default [
453453
},
454454
],
455455

456+
'@typescript-eslint/consistent-type-definitions': ['error', 'interface'],
457+
456458
'rulesdir/no-underscored-properties': 'error',
457459
'rulesdir/prefer-readonly-keyword': 'error',
458460
'rulesdir/inline-type-imports': 'error',

‎front_end/core/common/Console.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,9 @@ export const enum Events {
7878
MESSAGE_ADDED = 'messageAdded',
7979
}
8080

81-
export type EventTypes = {
82-
[Events.MESSAGE_ADDED]: Message,
83-
};
81+
export interface EventTypes {
82+
[Events.MESSAGE_ADDED]: Message;
83+
}
8484

8585
export const enum MessageLevel {
8686
INFO = 'info',

‎front_end/core/common/EventTarget.test.ts‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ const enum Events {
1616
UNION_EVENT = 'UnionEvent',
1717
}
1818

19-
type TestEvents = {
20-
[Events.VOID_EVENT]: void,
21-
[Events.NUMBER_EVENT]: number,
22-
[Events.KEY_VALUE_EVENT]: {key: string, value: number},
23-
[Events.BOOLEAN_EVENT]: boolean,
24-
[Events.UNION_EVENT]: string|null,
25-
};
19+
interface TestEvents {
20+
[Events.VOID_EVENT]: void;
21+
[Events.NUMBER_EVENT]: number;
22+
[Events.KEY_VALUE_EVENT]: {key: string, value: number};
23+
[Events.BOOLEAN_EVENT]: boolean;
24+
[Events.UNION_EVENT]: string|null;
25+
}
2626

2727
class TypedEventEmitter extends Common.ObjectWrapper.ObjectWrapper<TestEvents> {
2828
testValidArgumentTypes() {

‎front_end/core/common/EventTarget.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ export function removeEventListeners(eventList: EventDescriptor[]): void {
2222

2323
// This type can be used as the type parameter for `EventTarget`/`ObjectWrapper`
2424
// when the set of events is not known at compile time.
25-
export type GenericEvents = {
25+
export interface GenericEvents {
2626
// eslint-disable-next-line @typescript-eslint/no-explicit-any
27-
[eventName: string]: any,
28-
};
27+
[eventName: string]: any;
28+
}
2929

3030
export type EventPayloadToRestParameters<Events, T extends keyof Events> = Events[T] extends void ? [] : [Events[T]];
3131
export type EventListener<Events, T extends keyof Events> = (arg0: EventTargetEvent<Events[T], Events>) => void;

‎front_end/core/host/AidaClient.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,6 @@ export const enum Events {
495495
AIDA_AVAILABILITY_CHANGED = 'aidaAvailabilityChanged',
496496
}
497497

498-
export type EventTypes = {
499-
[Events.AIDA_AVAILABILITY_CHANGED]: void,
500-
};
498+
export interface EventTypes {
499+
[Events.AIDA_AVAILABILITY_CHANGED]: void;
500+
}

‎front_end/core/host/InspectorFrontendHostAPI.ts‎

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -204,36 +204,36 @@ export interface KeyDownEvent {
204204
// `EventTypes` is not used at runtime.
205205
// Please note that the "dispatch" side can't be type-checked as the dispatch is
206206
// done dynamically.
207-
export type EventTypes = {
208-
[Events.AppendedToURL]: Platform.DevToolsPath.RawPathString|Platform.DevToolsPath.UrlString,
209-
[Events.CanceledSaveURL]: Platform.DevToolsPath.UrlString,
210-
[Events.ColorThemeChanged]: void,
211-
[Events.ContextMenuCleared]: void,
212-
[Events.ContextMenuItemSelected]: number,
213-
[Events.DeviceCountUpdated]: number,
214-
[Events.DevicesDiscoveryConfigChanged]: Adb.Config,
215-
[Events.DevicesPortForwardingStatusChanged]: void,
216-
[Events.DevicesUpdated]: void,
217-
[Events.DispatchMessage]: string,
218-
[Events.DispatchMessageChunk]: DispatchMessageChunkEvent,
219-
[Events.EnterInspectElementMode]: void,
220-
[Events.EyeDropperPickedColor]: EyeDropperPickedColorEvent,
221-
[Events.FileSystemsLoaded]: DevToolsFileSystem[],
222-
[Events.FileSystemRemoved]: Platform.DevToolsPath.RawPathString,
223-
[Events.FileSystemAdded]: FileSystemAddedEvent,
224-
[Events.FileSystemFilesChangedAddedRemoved]: FilesChangedEvent,
225-
[Events.IndexingTotalWorkCalculated]: IndexingTotalWorkCalculatedEvent,
226-
[Events.IndexingWorked]: IndexingWorkedEvent,
227-
[Events.IndexingDone]: IndexingEvent,
228-
[Events.KeyEventUnhandled]: KeyEventUnhandledEvent,
229-
[Events.ReloadInspectedPage]: boolean,
230-
[Events.RevealSourceLine]: RevealSourceLineEvent,
231-
[Events.SavedURL]: SavedURLEvent,
232-
[Events.SearchCompleted]: SearchCompletedEvent,
233-
[Events.SetInspectedTabId]: string,
234-
[Events.SetUseSoftMenu]: boolean,
235-
[Events.ShowPanel]: string,
236-
};
207+
export interface EventTypes {
208+
[Events.AppendedToURL]: Platform.DevToolsPath.RawPathString|Platform.DevToolsPath.UrlString;
209+
[Events.CanceledSaveURL]: Platform.DevToolsPath.UrlString;
210+
[Events.ColorThemeChanged]: void;
211+
[Events.ContextMenuCleared]: void;
212+
[Events.ContextMenuItemSelected]: number;
213+
[Events.DeviceCountUpdated]: number;
214+
[Events.DevicesDiscoveryConfigChanged]: Adb.Config;
215+
[Events.DevicesPortForwardingStatusChanged]: void;
216+
[Events.DevicesUpdated]: void;
217+
[Events.DispatchMessage]: string;
218+
[Events.DispatchMessageChunk]: DispatchMessageChunkEvent;
219+
[Events.EnterInspectElementMode]: void;
220+
[Events.EyeDropperPickedColor]: EyeDropperPickedColorEvent;
221+
[Events.FileSystemsLoaded]: DevToolsFileSystem[];
222+
[Events.FileSystemRemoved]: Platform.DevToolsPath.RawPathString;
223+
[Events.FileSystemAdded]: FileSystemAddedEvent;
224+
[Events.FileSystemFilesChangedAddedRemoved]: FilesChangedEvent;
225+
[Events.IndexingTotalWorkCalculated]: IndexingTotalWorkCalculatedEvent;
226+
[Events.IndexingWorked]: IndexingWorkedEvent;
227+
[Events.IndexingDone]: IndexingEvent;
228+
[Events.KeyEventUnhandled]: KeyEventUnhandledEvent;
229+
[Events.ReloadInspectedPage]: boolean;
230+
[Events.RevealSourceLine]: RevealSourceLineEvent;
231+
[Events.SavedURL]: SavedURLEvent;
232+
[Events.SearchCompleted]: SearchCompletedEvent;
233+
[Events.SetInspectedTabId]: string;
234+
[Events.SetUseSoftMenu]: boolean;
235+
[Events.ShowPanel]: string;
236+
}
237237

238238
export interface InspectorFrontendHostAPI {
239239
addFileSystem(type?: string): void;

‎front_end/core/i18n/i18nTypes.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +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 Values = {
6-
[key: string]: string|boolean|number,
7-
};
5+
export interface Values {
6+
[key: string]: string|boolean|number;
7+
}
88

99
export interface SerializedMessage {
1010
string: string;

‎front_end/core/platform/ServerTiming.ts‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,14 @@ const defaultWarningMessages: ServerTimingParsingWarningMessage = {
2929
},
3030
};
3131

32-
export type ServerTimingParsingWarningMessage = {
33-
deprecratedSyntax: () => string,
34-
duplicateParameter: (parameter: string) => string,
35-
noValueFoundForParameter: (parameter: string) => string,
36-
unrecognizedParameter: (parameter: string) => string,
37-
extraneousTrailingCharacters: () => string,
38-
unableToParseValue: (parameter: string, value: string) => string,
39-
};
32+
export interface ServerTimingParsingWarningMessage {
33+
deprecratedSyntax: () => string;
34+
duplicateParameter: (parameter: string) => string;
35+
noValueFoundForParameter: (parameter: string) => string;
36+
unrecognizedParameter: (parameter: string) => string;
37+
extraneousTrailingCharacters: () => string;
38+
unableToParseValue: (parameter: string, value: string) => string;
39+
}
4040

4141
export class ServerTiming {
4242
metric: string;

‎front_end/core/protocol_client/InspectorBackend.ts‎

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ export const DevToolsStubErrorCode = -32015;
3939
const GenericErrorCode = -32000;
4040
const ConnectionClosedErrorCode = -32001;
4141

42-
type MessageParams = {
42+
interface MessageParams {
4343
// eslint-disable-next-line @typescript-eslint/no-explicit-any
44-
[x: string]: any,
45-
};
44+
[x: string]: any;
45+
}
4646

4747
type ProtocolDomainName = ProtocolProxyApi.ProtocolDomainName;
4848

@@ -52,15 +52,15 @@ export interface MessageError {
5252
data?: string|null;
5353
}
5454

55-
export type Message = {
56-
sessionId?: string,
57-
url?: Platform.DevToolsPath.UrlString,
58-
id?: number,
59-
error?: MessageError|null,
60-
result?: Object|null,
61-
method?: QualifiedName,
62-
params?: MessageParams|null,
63-
};
55+
export interface Message {
56+
sessionId?: string;
57+
url?: Platform.DevToolsPath.UrlString;
58+
id?: number;
59+
error?: MessageError|null;
60+
result?: Object|null;
61+
method?: QualifiedName;
62+
params?: MessageParams|null;
63+
}
6464

6565
interface EventMessage extends Message {
6666
method: QualifiedName;

‎front_end/core/sdk/AccessibilityModel.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -196,9 +196,9 @@ export const enum Events {
196196
TREE_UPDATED = 'TreeUpdated',
197197
}
198198

199-
export type EventTypes = {
200-
[Events.TREE_UPDATED]: {root?: AccessibilityNode},
201-
};
199+
export interface EventTypes {
200+
[Events.TREE_UPDATED]: {root?: AccessibilityNode};
201+
}
202202

203203
export class AccessibilityModel extends SDKModel<EventTypes> implements ProtocolProxyApi.AccessibilityDispatcher {
204204
agent: ProtocolProxyApi.AccessibilityApi;

0 commit comments

Comments
 (0)