Closed
Description
- I have tried restarting my IDE and the issue persists.
- I have updated to the latest version of the packages.
- I have read the FAQ and my problem is not listed.
Repro
{
"root": true,
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2021,
"project": "./tsconfig.json",
"sourceType": "module"
},
"plugins": [
"@typescript-eslint"
],
"rules": {
"@typescript-eslint/no-unnecessary-type-assertion": "error"
}
}
// code.ts
type Foo = 3
const foox: Foo = 3 as 3
const fooy = 3 as Foo
const fooz: Foo = 3
const fooa = <3>3
const foob = <Foo>3
const fooc = 3
const bar = fooc!
function foo (x: number): number {
return x! // unnecessary non-null
}
{
"compilerOptions": { "strict": true },
"include": [ "./code.ts" ],
}
Expected Result
3:14 error This assertion is unnecessary since it does not change the type of the expression @typescript-eslint/no-unnecessary-type-assertion
4:14 error This assertion is unnecessary since it does not change the type of the expression @typescript-eslint/no-unnecessary-type-assertion
7:14 error This assertion is unnecessary since it does not change the type of the expression @typescript-eslint/no-unnecessary-type-assertion
8:14 error This assertion is unnecessary since it does not change the type of the expression @typescript-eslint/no-unnecessary-type-assertion
11:13 error This assertion is unnecessary since it does not change the type of the expression @typescript-eslint/no-unnecessary-type-assertion
14:9 error This assertion is unnecessary since it does not change the type of the expression @typescript-eslint/no-unnecessary-type-assertion
✖ 6 problems (6 errors, 0 warnings)
OR (see below)
3:14 error This assertion is unnecessary since it does not change the type of the expression @typescript-eslint/no-unnecessary-type-assertion
4:14 error This assertion is unnecessary since it does not change the type of the expression @typescript-eslint/no-unnecessary-type-assertion
5:7 error This assertion is unnecessary since it does not change the type of the expression @typescript-eslint/no-unnecessary-type-assertion
7:14 error This assertion is unnecessary since it does not change the type of the expression @typescript-eslint/no-unnecessary-type-assertion
8:14 error This assertion is unnecessary since it does not change the type of the expression @typescript-eslint/no-unnecessary-type-assertion
11:13 error This assertion is unnecessary since it does not change the type of the expression @typescript-eslint/no-unnecessary-type-assertion
14:9 error This assertion is unnecessary since it does not change the type of the expression @typescript-eslint/no-unnecessary-type-assertion
✖ 7 problems (7 errors, 0 warnings)
Actual Result
11:13 error This assertion is unnecessary since it does not change the type of the expression @typescript-eslint/no-unnecessary-type-assertion
14:9 error This assertion is unnecessary since it does not change the type of the expression @typescript-eslint/no-unnecessary-type-assertion
✖ 2 problems (2 errors, 0 warnings)
Additional Info
The typesToIgnore
option description implies also checking annotations. Since annotations and assertions are different things, I would expect them to be handled by separate rules. Depending on whether or not they are an intended target for this rule, the first or second expectation should be fulfilled.
Versions
package | version |
---|---|
@typescript-eslint/eslint-plugin |
5.10.0 |
@typescript-eslint/parser |
5.10.0 |
TypeScript |
4.5.5 |
ESLint |
8.7.0 |
node |
14.17.5 , 16.13.2 |