diff --git a/src/index.ts b/src/index.ts
index 5db594ec..4ce1bac5 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -52,7 +52,7 @@ import * as preferObjectLiteral from './rules/prefer-object-literal';
 import * as preferSingleBooleanReturn from './rules/prefer-single-boolean-return';
 import * as preferWhile from './rules/prefer-while';
 
-export const rules: Record<string, TSESLint.RuleModule<string, Array<unknown>>> = {
+export const rules = {
   'cognitive-complexity': cognitiveComplexity,
   'elseif-without-else': elseifWithoutElse,
   'max-switch-cases': maxSwitchCases,
@@ -98,7 +98,7 @@ const recommendedConfig: FlatConfig.Config = {
 };
 
 for (const key in rules) {
-  const rule = rules[key];
+  const rule = rules[key as keyof typeof rules];
   const recommended = rule.meta.docs?.recommended;
 
   recommendedConfig.rules![`sonarjs/${key}`] = recommended === undefined ? 'off' : 'error';
diff --git a/tests/index.test.ts b/tests/index.test.ts
index c9a69b68..96eadfd4 100644
--- a/tests/index.test.ts
+++ b/tests/index.test.ts
@@ -48,7 +48,7 @@ it('should document all rules', () => {
   existingRules.forEach(rule => {
     expect(README.includes(rule)).toBe(true);
     expect(fs.existsSync(`${root}/docs/rules/${rule}.md`)).toBe(true);
-    expect(rules[rule].meta.docs!.url).toBe(
+    expect(rules[rule as keyof typeof rules].meta.docs!.url).toBe(
       `https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/${rule}.md`,
     );
   });