eslint-plugin-no-excess-properties 0.0.7 → 0.0.8

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.
@@ -51,7 +51,8 @@ function resolveType(type) {
51
51
  resolvedType = callSignatures[0].getReturnType();
52
52
  }
53
53
  const arrayType = resolvedType.getNumberIndexType();
54
- if (arrayType) {
54
+ if (arrayType &&
55
+ resolvedType.symbol?.name === "Array") {
55
56
  resolvedType = arrayType;
56
57
  }
57
58
  return resolvedType;
@@ -59,11 +60,6 @@ function resolveType(type) {
59
60
  function compareTypes(leftType, rightType, rightNode, context) {
60
61
  const allLeftTypes = tsutils.unionConstituents(leftType);
61
62
  const allRightTypes = tsutils.unionConstituents(rightType);
62
- if (allLeftTypes.some((t) => t.getStringIndexType() !== undefined ||
63
- (t.getNumberIndexType() !== undefined &&
64
- t.symbol?.name !== "Array"))) {
65
- return;
66
- }
67
63
  for (const rightType of allRightTypes) {
68
64
  const rightResolvedType = resolveType(rightType);
69
65
  if (!isObjectLiteral(rightResolvedType)) {
@@ -78,6 +74,11 @@ function compareTypes(leftType, rightType, rightNode, context) {
78
74
  const leftPropertyNames = leftResolvedType
79
75
  .getProperties()
80
76
  .map((p) => p.name);
77
+ if (leftResolvedType.getStringIndexType() !== undefined ||
78
+ leftResolvedType.getNumberIndexType() !== undefined) {
79
+ bestMatchExcessPropertyNames = null;
80
+ break;
81
+ }
81
82
  const excessPropertyNames = rightPropertyNames.filter((n) => !leftPropertyNames.includes(n));
82
83
  if (leftPropertyNames.length > 0 &&
83
84
  (bestMatchExcessPropertyNames === null ||
@@ -1 +1 @@
1
- {"version":3,"file":"object-literal.js","sourceRoot":"","sources":["../src/object-literal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"object-literal.js","sourceRoot":"","sources":["../src/object-literal.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "eslint-plugin-no-excess-properties",
3
3
  "description": "Excess properties are not allowed on object literals",
4
4
  "license": "MIT",
5
- "version": "0.0.7",
5
+ "version": "0.0.8",
6
6
  "homepage": "https://bitbucket.org/unimorphic/eslint-plugin-no-excess-properties",
7
7
  "keywords": [
8
8
  "eslint-plugin",
@@ -291,6 +291,9 @@ ruleTester.run("object-literal", objectLiteral, {
291
291
  `
292
292
  Object.keys({ prop1: 1 })
293
293
  `,
294
+ `
295
+ const test: { prop1: number, [property: string]: number; }[] = [{ prop2: 1 }];
296
+ `,
294
297
  ],
295
298
  invalid: [],
296
299
  });
@@ -33,7 +33,10 @@ function resolveType(type: ts.Type) {
33
33
  }
34
34
 
35
35
  const arrayType = resolvedType.getNumberIndexType();
36
- if (arrayType) {
36
+ if (
37
+ arrayType &&
38
+ (resolvedType as TypeOptionalSymbol).symbol?.name === "Array"
39
+ ) {
37
40
  resolvedType = arrayType;
38
41
  }
39
42
 
@@ -49,17 +52,6 @@ function compareTypes(
49
52
  const allLeftTypes = tsutils.unionConstituents(leftType);
50
53
  const allRightTypes = tsutils.unionConstituents(rightType);
51
54
 
52
- if (
53
- allLeftTypes.some(
54
- (t) =>
55
- t.getStringIndexType() !== undefined ||
56
- (t.getNumberIndexType() !== undefined &&
57
- (t as TypeOptionalSymbol).symbol?.name !== "Array"),
58
- )
59
- ) {
60
- return;
61
- }
62
-
63
55
  for (const rightType of allRightTypes) {
64
56
  const rightResolvedType = resolveType(rightType);
65
57
 
@@ -78,6 +70,14 @@ function compareTypes(
78
70
  .getProperties()
79
71
  .map((p) => p.name);
80
72
 
73
+ if (
74
+ leftResolvedType.getStringIndexType() !== undefined ||
75
+ leftResolvedType.getNumberIndexType() !== undefined
76
+ ) {
77
+ bestMatchExcessPropertyNames = null;
78
+ break;
79
+ }
80
+
81
81
  const excessPropertyNames = rightPropertyNames.filter(
82
82
  (n) => !leftPropertyNames.includes(n),
83
83
  );