From 40760f98da0d23c7bce3da04cf37a56c10447bde Mon Sep 17 00:00:00 2001 From: Flo Edelmann Date: Sun, 3 Oct 2021 23:53:52 +0200 Subject: [PATCH] fix(eslint-plugin): [non-nullable-type-assertion-style] false-positive with non-nullish `as` assertions and types (#3940) --- .../src/rules/non-nullable-type-assertion-style.ts | 4 ++++ .../tests/rules/non-nullable-type-assertion-style.test.ts | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/packages/eslint-plugin/src/rules/non-nullable-type-assertion-style.ts b/packages/eslint-plugin/src/rules/non-nullable-type-assertion-style.ts index eef8c58445f..647fbcddd4c 100644 --- a/packages/eslint-plugin/src/rules/non-nullable-type-assertion-style.ts +++ b/packages/eslint-plugin/src/rules/non-nullable-type-assertion-style.ts @@ -57,6 +57,10 @@ export default util.createRule({ type.flags !== ts.TypeFlags.Undefined, ); + if (nonNullishOriginalTypes.length === originalTypes.length) { + return false; + } + for (const assertedType of assertedTypes) { if (!nonNullishOriginalTypes.includes(assertedType)) { return false; diff --git a/packages/eslint-plugin/tests/rules/non-nullable-type-assertion-style.test.ts b/packages/eslint-plugin/tests/rules/non-nullable-type-assertion-style.test.ts index 33c603135f5..fadd5064abd 100644 --- a/packages/eslint-plugin/tests/rules/non-nullable-type-assertion-style.test.ts +++ b/packages/eslint-plugin/tests/rules/non-nullable-type-assertion-style.test.ts @@ -54,6 +54,13 @@ const y = x as NonNullable; ` const foo = [] as const; `, + ` +const x = 1 as 1; + `, + ` +declare function foo(): T; +const bar = foo() as number; + `, ], invalid: [