Simplify TypeScript types for JQuery elements (#6991)

_No functional changes intended_

The existing type functions a little like this:

"Take the intersection of all common properties of all values in
HTMLElementTagNameMap"

This very much just happens to be the same as HTMLElement, since that's
the declared base for all of the types in HTMLElementTagNameMap. This
small patch simplifies this type (and makes it significantly easier to
read the code)
This commit is contained in:
Mats Jun
2024-10-22 19:33:03 +09:00
committed by GitHub
parent 35cd137722
commit 6753449778
6 changed files with 88 additions and 88 deletions

View File

@@ -179,67 +179,67 @@ export class Compiler extends MonacoPane<monaco.editor.IStandaloneCodeEditor, Co
private recentInstructionSet: InstructionSet | null;
private currentLangId: string | null;
private filters: Toggles;
private optButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private stackUsageButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private flagsButton?: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private ppButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private astButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private irButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private clangirButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private optPipelineButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private deviceButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private gnatDebugTreeButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private gnatDebugButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private rustMirButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private rustMacroExpButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private haskellCoreButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private haskellStgButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private haskellCmmButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private gccDumpButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private cfgButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private executorButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private libsButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private compileInfoLabel: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private compileClearCache: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private outputBtn: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private outputTextCount: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private outputErrorCount: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private optionsField: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private optButton: JQuery<HTMLButtonElement>;
private stackUsageButton: JQuery<HTMLButtonElement>;
private flagsButton?: JQuery<HTMLButtonElement>;
private ppButton: JQuery<HTMLButtonElement>;
private astButton: JQuery<HTMLButtonElement>;
private irButton: JQuery<HTMLButtonElement>;
private clangirButton: JQuery<HTMLButtonElement>;
private optPipelineButton: JQuery<HTMLButtonElement>;
private deviceButton: JQuery<HTMLButtonElement>;
private gnatDebugTreeButton: JQuery<HTMLButtonElement>;
private gnatDebugButton: JQuery<HTMLButtonElement>;
private rustMirButton: JQuery<HTMLButtonElement>;
private rustMacroExpButton: JQuery<HTMLButtonElement>;
private haskellCoreButton: JQuery<HTMLButtonElement>;
private haskellStgButton: JQuery<HTMLButtonElement>;
private haskellCmmButton: JQuery<HTMLButtonElement>;
private gccDumpButton: JQuery<HTMLButtonElement>;
private cfgButton: JQuery<HTMLButtonElement>;
private executorButton: JQuery<HTMLButtonElement>;
private libsButton: JQuery<HTMLButtonElement>;
private compileInfoLabel: JQuery<HTMLElement>;
private compileClearCache: JQuery<HTMLElement>;
private outputBtn: JQuery<HTMLButtonElement>;
private outputTextCount: JQuery<HTMLElement>;
private outputErrorCount: JQuery<HTMLElement>;
private optionsField: JQuery<HTMLElement>;
private initialOptionsFieldPlacehoder: JQuery<HTMLElement>;
private prependOptions: JQuery<HTMLElement>;
private fullCompilerName: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private fullTimingInfo: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private fullCompilerName: JQuery<HTMLElement>;
private fullTimingInfo: JQuery<HTMLElement>;
private compilerLicenseButton: JQuery<HTMLElement>;
private filterBinaryButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private filterBinaryButton: JQuery<HTMLButtonElement>;
private filterBinaryTitle: JQuery<HTMLElement>;
private filterBinaryObjectButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private filterBinaryObjectButton: JQuery<HTMLButtonElement>;
private filterBinaryObjectTitle: JQuery<HTMLElement>;
private filterExecuteButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private filterExecuteButton: JQuery<HTMLButtonElement>;
private filterExecuteTitle: JQuery<HTMLElement>;
private filterLabelsButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private filterLabelsButton: JQuery<HTMLButtonElement>;
private filterLabelsTitle: JQuery<HTMLElement>;
private filterDirectivesButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private filterDirectivesButton: JQuery<HTMLButtonElement>;
private filterDirectivesTitle: JQuery<HTMLElement>;
private filterLibraryCodeButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private filterLibraryCodeButton: JQuery<HTMLButtonElement>;
private filterLibraryCodeTitle: JQuery<HTMLElement>;
private filterCommentsButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private filterCommentsButton: JQuery<HTMLButtonElement>;
private filterCommentsTitle: JQuery<HTMLElement>;
private filterTrimButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private filterTrimButton: JQuery<HTMLButtonElement>;
private filterTrimTitle: JQuery<HTMLElement>;
private filterDebugCallsButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private filterDebugCallsButton: JQuery<HTMLButtonElement>;
private filterDebugCallsTitle: JQuery<HTMLElement>;
private filterIntelButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private filterIntelButton: JQuery<HTMLButtonElement>;
private filterIntelTitle: JQuery<HTMLElement>;
private filterDemangleButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private filterDemangleButton: JQuery<HTMLButtonElement>;
private filterDemangleTitle: JQuery<HTMLElement>;
private filterVerboseDemanglingButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private filterVerboseDemanglingButton: JQuery<HTMLButtonElement>;
private filterVerboseDemanglingTitle: JQuery<HTMLElement>;
private noBinaryFiltersButtons: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private shortCompilerName: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private bottomBar: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private statusLabel: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private statusIcon: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private rustHirButton: JQuery<HTMLElement>;
private noBinaryFiltersButtons: JQuery<HTMLButtonElement>;
private shortCompilerName: JQuery<HTMLElement>;
private bottomBar: JQuery<HTMLElement>;
private statusLabel: JQuery<HTMLElement>;
private statusIcon: JQuery<HTMLElement>;
private rustHirButton: JQuery<HTMLButtonElement>;
private libsWidget: LibsWidget | null;
private isLabelCtxKey: monaco.editor.IContextKey<boolean>;
private revealJumpStackHasElementsCtxKey: monaco.editor.IContextKey<boolean>;

View File

@@ -48,7 +48,7 @@ import {unwrapString} from '../assert.js';
type CompilerEntry = {
parent: JQuery<HTMLElement>;
picker: CompilerPicker | null;
optionsField: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]> | null;
optionsField: JQuery<HTMLElement> | null;
statusIcon: JQuery<HTMLElement> | null;
prependOptions: JQuery<HTMLElement> | null;
};
@@ -75,10 +75,10 @@ export class Conformance extends Pane<ConformanceViewState> {
private currentLibs: Lib[];
private readonly stateByLang: Record<string, ConformanceViewState>;
private libsButton: JQuery<HTMLElement>;
private conformanceContentRoot: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private selectorList: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private addCompilerButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private selectorTemplate: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private conformanceContentRoot: JQuery<HTMLElement>;
private selectorList: JQuery<HTMLElement>;
private addCompilerButton: JQuery<HTMLElement>;
private selectorTemplate: JQuery<HTMLElement>;
private lastState?: ConformanceViewState;
constructor(hub: Hub, container: Container, state: PaneState & ConformanceViewState) {

View File

@@ -92,12 +92,12 @@ export class Editor extends MonacoPane<monaco.editor.IStandaloneCodeEditor, Edit
private mouseMoveThrottledFunction?: ((e: monaco.editor.IEditorMouseEvent) => void) & _.Cancelable;
private cursorSelectionThrottledFunction?: (e: monaco.editor.ICursorSelectionChangedEvent) => void;
private vimMode: any;
private vimFlag: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private loadSaveButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private addExecutorButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private conformanceViewerButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private cppInsightsButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private quickBenchButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private vimFlag: JQuery<HTMLElement>;
private loadSaveButton: JQuery<HTMLElement>;
private addExecutorButton: JQuery<HTMLElement>;
private conformanceViewerButton: JQuery<HTMLElement>;
private cppInsightsButton: JQuery<HTMLElement>;
private quickBenchButton: JQuery<HTMLElement>;
private languageInfoButton: JQuery;
private nothingCtrlSSince?: number;
private nothingCtrlSTimes?: number;

View File

@@ -101,33 +101,33 @@ export class Executor extends Pane<ExecutorState> {
private compilerPicker: CompilerPicker;
private currentLangId: string;
private toggleWrapButton: Toggles;
private outputContentRoot: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private executionStatusSection: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private compilerOutputSection: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private executionOutputSection: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private optionsField: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private execArgsField: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private execStdinField: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private prependOptions: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private fullCompilerName: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private fullTimingInfo: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private libsButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private compileTimeLabel: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private shortCompilerName: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private bottomBar: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private statusLabel: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private statusIcon: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]> | null;
private panelCompilation: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private panelArgs: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private panelStdin: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private wrapTitle: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private rerunButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private compileClearCache: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private wrapButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private toggleCompilation: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private toggleArgs: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private toggleStdin: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private toggleCompilerOut: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private outputContentRoot: JQuery<HTMLElement>;
private executionStatusSection: JQuery<HTMLElement>;
private compilerOutputSection: JQuery<HTMLElement>;
private executionOutputSection: JQuery<HTMLElement>;
private optionsField: JQuery<HTMLElement>;
private execArgsField: JQuery<HTMLElement>;
private execStdinField: JQuery<HTMLElement>;
private prependOptions: JQuery<HTMLElement>;
private fullCompilerName: JQuery<HTMLElement>;
private fullTimingInfo: JQuery<HTMLElement>;
private libsButton: JQuery<HTMLElement>;
private compileTimeLabel: JQuery<HTMLElement>;
private shortCompilerName: JQuery<HTMLElement>;
private bottomBar: JQuery<HTMLElement>;
private statusLabel: JQuery<HTMLElement>;
private statusIcon: JQuery<HTMLElement> | null;
private panelCompilation: JQuery<HTMLElement>;
private panelArgs: JQuery<HTMLElement>;
private panelStdin: JQuery<HTMLElement>;
private wrapTitle: JQuery<HTMLElement>;
private rerunButton: JQuery<HTMLElement>;
private compileClearCache: JQuery<HTMLElement>;
private wrapButton: JQuery<HTMLElement>;
private toggleCompilation: JQuery<HTMLElement>;
private toggleArgs: JQuery<HTMLElement>;
private toggleStdin: JQuery<HTMLElement>;
private toggleCompilerOut: JQuery<HTMLElement>;
private libsWidget?: LibsWidget;
private readonly infoByLang: Record<string, LangInfo | undefined>;
private compiler: CompilerInfo | null;

View File

@@ -73,8 +73,8 @@ export class Ir extends MonacoPane<monaco.editor.IStandaloneCodeEditor, IrState>
demangle: true,
};
private cfgButton: JQuery;
private wrapButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private wrapTitle: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private wrapButton: JQuery<HTMLElement>;
private wrapTitle: JQuery<HTMLElement>;
constructor(hub: Hub, container: Container, state: IrState & MonacoPaneState) {
super(hub, container, state);

View File

@@ -51,8 +51,8 @@ export class Opt extends MonacoPane<monaco.editor.IStandaloneCodeEditor, OptStat
private isCompilerSupported?: boolean;
private filters: Toggles;
private toggleWrapButton: Toggles;
private wrapButton: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private wrapTitle: JQuery<HTMLElementTagNameMap[keyof HTMLElementTagNameMap]>;
private wrapButton: JQuery<HTMLElement>;
private wrapTitle: JQuery<HTMLElement>;
// Keep optRemarks as state, to avoid triggerring a recompile when options change
private optRemarks: OptCodeEntry[];