diff --git a/packages/eslint-plugin/src/rules/space-infix-ops.ts b/packages/eslint-plugin/src/rules/space-infix-ops.ts index 3d5cf9e2458..aa0cfcb3d83 100644 --- a/packages/eslint-plugin/src/rules/space-infix-ops.ts +++ b/packages/eslint-plugin/src/rules/space-infix-ops.ts @@ -183,18 +183,13 @@ export default util.createRule({ } function checkForTypeConditional(node: TSESTree.TSConditionalType): void { - const extendsTypeNode = sourceCode.getTokenByRangeStart( - node.extendsType.range[0], - )!; - const trueTypeNode = sourceCode.getTokenByRangeStart( - node.trueType.range[0], - )!; - const falseTypeNode = sourceCode.getTokenByRangeStart( - node.falseType.range[0], - ); + const extendsLastToken = sourceCode.getLastToken(node.extendsType)!; + const trueFirstToken = sourceCode.getFirstToken(node.trueType)!; + const trueLastToken = sourceCode.getLastToken(node.trueType)!; + const falseFirstToken = sourceCode.getFirstToken(node.falseType)!; - checkAndReportAssignmentSpace(node, extendsTypeNode, trueTypeNode); - checkAndReportAssignmentSpace(node, trueTypeNode, falseTypeNode); + checkAndReportAssignmentSpace(node, extendsLastToken, trueFirstToken); + checkAndReportAssignmentSpace(node, trueLastToken, falseFirstToken); } return { diff --git a/packages/eslint-plugin/tests/rules/space-infix-ops.test.ts b/packages/eslint-plugin/tests/rules/space-infix-ops.test.ts index 59a99d9aced..be347d85663 100644 --- a/packages/eslint-plugin/tests/rules/space-infix-ops.test.ts +++ b/packages/eslint-plugin/tests/rules/space-infix-ops.test.ts @@ -235,6 +235,15 @@ ruleTester.run('space-infix-ops', rule, { & (((() => void))); `, }, + { + code: 'type Baz = T extends (bar: string) => void ? string : number', + }, + { + code: 'type Foo = T extends { bar: string } ? string : number', + }, + { + code: 'type Baz = T extends (bar: string) => void ? { x: string } : { y: string }', + }, { code: ` interface Test {