Skip to content

Commit 5a7d0b0

Browse files
feat: add type-level assertion to ensure all settings are implemented in the UI (#1206)
1 parent 338fb14 commit 5a7d0b0

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

src/ts/browserAction/settingsItems.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import type { AssertType } from "@robot-inventor/ts-utils";
12
import type { Settings } from "../../types/common/settings";
23
import type { TranslationKey } from "../../types/common/translator";
34

@@ -87,4 +88,15 @@ const SETTINGS_ITEMS = [
8788
}
8889
] as const satisfies SettingsData;
8990

91+
// Check if there are missing keys in the settings data.
92+
type AllSettingsKeys = keyof Settings;
93+
type DefinedSettingsKeys = (typeof SETTINGS_ITEMS)[number]["items"][number]["settingsName"];
94+
type MissingKeys = Exclude<AllSettingsKeys, DefinedSettingsKeys>;
95+
96+
// @ts-expect-error This is a type assertion to check if there are missing keys.
97+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
98+
type _ =
99+
// This line break is necessary to ensure that type assertion errors are not ignored
100+
AssertType<MissingKeys, never>;
101+
90102
export { type SettingsData, type SettingsItemData, SETTINGS_ITEMS };

0 commit comments

Comments
 (0)