@typescript-eslint/eslint-plugin 8.65.1-alpha.15 → 8.65.1-alpha.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -356,6 +356,11 @@ function collectTypeParameterUsageCounts(checker, node, foundIdentifierUsages, f
|
|
|
356
356
|
// They have properties, so we need to avoid double-counting.
|
|
357
357
|
visitType(type.templateType ?? type.constraintType, false);
|
|
358
358
|
}
|
|
359
|
+
// TS doesn't count mapped types key remapping (`{[K in 'a' as T]: K}`)
|
|
360
|
+
// but handles this under `MappedType.nameType`, so we need to visit that too.
|
|
361
|
+
if (type.nameType) {
|
|
362
|
+
visitType(type.nameType, false);
|
|
363
|
+
}
|
|
359
364
|
}
|
|
360
365
|
visitType(type.getNumberIndexType(), true);
|
|
361
366
|
visitType(type.getStringIndexType(), true);
|
|
@@ -138,21 +138,24 @@ exports.default = (0, util_1.createRule)({
|
|
|
138
138
|
signatures[0].getDeclaration() === tsFunc) {
|
|
139
139
|
return;
|
|
140
140
|
}
|
|
141
|
-
const
|
|
142
|
-
|
|
141
|
+
const defaultCanBeUsed = signatures.some(signature => {
|
|
142
|
+
const params = signature.getParameters();
|
|
143
|
+
if (paramIndex >= params.length) {
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
143
146
|
const paramSymbol = params[paramIndex];
|
|
144
147
|
if (paramSymbol.valueDeclaration &&
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
return;
|
|
148
|
+
(0, util_1.isRestParameterDeclaration)(paramSymbol.valueDeclaration)) {
|
|
149
|
+
return true;
|
|
148
150
|
}
|
|
149
|
-
if (
|
|
150
|
-
|
|
151
|
-
if (!tsutils.isTypeParameter(paramType) &&
|
|
152
|
-
!canBeUndefined(paramType)) {
|
|
153
|
-
reportUselessDefaultAssignment(node, 'parameter');
|
|
154
|
-
}
|
|
151
|
+
if (tsutils.isSymbolFlagSet(paramSymbol, ts.SymbolFlags.Optional)) {
|
|
152
|
+
return true;
|
|
155
153
|
}
|
|
154
|
+
const paramType = checker.getTypeOfSymbol(paramSymbol);
|
|
155
|
+
return (tsutils.isTypeParameter(paramType) || canBeUndefined(paramType));
|
|
156
|
+
});
|
|
157
|
+
if (!defaultCanBeUsed) {
|
|
158
|
+
reportUselessDefaultAssignment(node, 'parameter');
|
|
156
159
|
}
|
|
157
160
|
}
|
|
158
161
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typescript-eslint/eslint-plugin",
|
|
3
|
-
"version": "8.65.1-alpha.
|
|
3
|
+
"version": "8.65.1-alpha.17",
|
|
4
4
|
"description": "TypeScript plugin for ESLint",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
@@ -49,10 +49,10 @@
|
|
|
49
49
|
"ignore": "^7.0.5",
|
|
50
50
|
"natural-compare": "^1.4.0",
|
|
51
51
|
"ts-api-utils": "^2.5.0",
|
|
52
|
-
"@typescript-eslint/scope-manager": "8.65.1-alpha.
|
|
53
|
-
"@typescript-eslint/utils": "8.65.1-alpha.
|
|
54
|
-
"@typescript-eslint/
|
|
55
|
-
"@typescript-eslint/
|
|
52
|
+
"@typescript-eslint/scope-manager": "8.65.1-alpha.17",
|
|
53
|
+
"@typescript-eslint/utils": "8.65.1-alpha.17",
|
|
54
|
+
"@typescript-eslint/type-utils": "8.65.1-alpha.17",
|
|
55
|
+
"@typescript-eslint/visitor-keys": "8.65.1-alpha.17"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@types/json-schema": "^7.0.15",
|
|
@@ -76,13 +76,13 @@
|
|
|
76
76
|
"typescript": ">=4.8.4 <6.1.0",
|
|
77
77
|
"unist-util-visit": "^5.0.0",
|
|
78
78
|
"vitest": "^4.0.18",
|
|
79
|
-
"@typescript-eslint/rule-
|
|
80
|
-
"@typescript-eslint/rule-
|
|
79
|
+
"@typescript-eslint/rule-tester": "8.65.1-alpha.17",
|
|
80
|
+
"@typescript-eslint/rule-schema-to-typescript-types": "8.65.1-alpha.17"
|
|
81
81
|
},
|
|
82
82
|
"peerDependencies": {
|
|
83
83
|
"eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
|
|
84
84
|
"typescript": ">=4.8.4 <6.1.0",
|
|
85
|
-
"@typescript-eslint/parser": "^8.65.1-alpha.
|
|
85
|
+
"@typescript-eslint/parser": "^8.65.1-alpha.17"
|
|
86
86
|
},
|
|
87
87
|
"funding": {
|
|
88
88
|
"type": "opencollective",
|