From 4b8e502f0bc17311782c5687af0bc58f03f1395a Mon Sep 17 00:00:00 2001 From: Ronen Amiel Date: Tue, 4 Feb 2025 20:46:41 +0200 Subject: [PATCH 1/2] handle accessor property with no-unsafe-assignemnt --- .../eslint-plugin/src/rules/no-unsafe-assignment.ts | 10 ++++++++++ .../tests/rules/no-unsafe-assignment.test.ts | 8 ++++++++ 2 files changed, 18 insertions(+) diff --git a/packages/eslint-plugin/src/rules/no-unsafe-assignment.ts b/packages/eslint-plugin/src/rules/no-unsafe-assignment.ts index d32812f6edfa..d0b31a5e8446 100644 --- a/packages/eslint-plugin/src/rules/no-unsafe-assignment.ts +++ b/packages/eslint-plugin/src/rules/no-unsafe-assignment.ts @@ -337,6 +337,16 @@ export default createRule({ } return { + 'AccessorProperty[value != null]'( + node: { value: NonNullable } & TSESTree.AccessorProperty, + ): void { + checkAssignment( + node.key, + node.value, + node, + getComparisonType(node.typeAnnotation), + ); + }, 'AssignmentExpression[operator = "="], AssignmentPattern'( node: TSESTree.AssignmentExpression | TSESTree.AssignmentPattern, ): void { diff --git a/packages/eslint-plugin/tests/rules/no-unsafe-assignment.test.ts b/packages/eslint-plugin/tests/rules/no-unsafe-assignment.test.ts index 30a256d6ee5f..769fcc9082fe 100644 --- a/packages/eslint-plugin/tests/rules/no-unsafe-assignment.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unsafe-assignment.test.ts @@ -203,6 +203,14 @@ class Foo { }, { code: ` +class Foo { + accessor a = 1 as any; +} + `, + errors: [{ messageId: 'anyAssignment' }], + }, + { + code: ` const [x] = spooky; `, errors: [ From 010be68f12b38a9b3f3ca9319e944a9222f6993a Mon Sep 17 00:00:00 2001 From: Ronen Amiel Date: Tue, 4 Feb 2025 23:45:19 +0200 Subject: [PATCH 2/2] also a valid test --- .../eslint-plugin/tests/rules/no-unsafe-assignment.test.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/eslint-plugin/tests/rules/no-unsafe-assignment.test.ts b/packages/eslint-plugin/tests/rules/no-unsafe-assignment.test.ts index 769fcc9082fe..0f2654f22279 100644 --- a/packages/eslint-plugin/tests/rules/no-unsafe-assignment.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unsafe-assignment.test.ts @@ -92,6 +92,11 @@ class Foo { ` class Foo { private a = 1; +} + `, + ` +class Foo { + accessor a = 1; } `, 'const x: Set = new Set();',