Skip to content

Commit 4589229

Browse files
FieldsOnCorrectTypeRule: improve type coverage (#2404)
1 parent 819750c commit 4589229

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

src/polyfills/arrayFrom.js

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import { SYMBOL_ITERATOR } from './symbols';
44

5+
declare function arrayFrom<T>(arrayLike: Iterable<T>): Array<T>;
6+
// eslint-disable-next-line no-redeclare
57
declare function arrayFrom<T: mixed>(
68
arrayLike: mixed,
79
mapFn?: (elem: mixed, index: number) => T,

src/validation/rules/FieldsOnCorrectTypeRule.js

+7-3
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import { type ASTVisitor } from '../../language/visitor';
1313
import { type GraphQLSchema } from '../../type/schema';
1414
import {
1515
type GraphQLOutputType,
16+
type GraphQLObjectType,
17+
type GraphQLInterfaceType,
1618
isObjectType,
1719
isInterfaceType,
1820
isAbstractType,
@@ -79,7 +81,9 @@ function getSuggestedTypeNames(
7981
return [];
8082
}
8183

82-
const suggestedTypes = new Set();
84+
const suggestedTypes: Set<
85+
GraphQLObjectType | GraphQLInterfaceType,
86+
> = new Set();
8387
const usageCount = Object.create(null);
8488
for (const possibleType of schema.getPossibleTypes(type)) {
8589
if (!possibleType.getFields()[fieldName]) {
@@ -111,10 +115,10 @@ function getSuggestedTypeNames(
111115
}
112116

113117
// Suggest super types first followed by subtypes
114-
if (isAbstractType(typeA) && schema.isSubType(typeA, typeB)) {
118+
if (isInterfaceType(typeA) && schema.isSubType(typeA, typeB)) {
115119
return -1;
116120
}
117-
if (isAbstractType(typeB) && schema.isSubType(typeB, typeA)) {
121+
if (isInterfaceType(typeB) && schema.isSubType(typeB, typeA)) {
118122
return 1;
119123
}
120124

0 commit comments

Comments
 (0)