From 5f74775e5bcb5904edfb106d9c94577f500a8c7b Mon Sep 17 00:00:00 2001 From: tao <2471314@gmail.com> Date: Sat, 18 Oct 2025 20:29:08 +0800 Subject: [PATCH] fix union type case --- .../src/rules/no-misused-promises.ts | 8 ++++---- .../tests/rules/no-misused-promises.test.ts | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/packages/eslint-plugin/src/rules/no-misused-promises.ts b/packages/eslint-plugin/src/rules/no-misused-promises.ts index b791fe150584..74f0690a5174 100644 --- a/packages/eslint-plugin/src/rules/no-misused-promises.ts +++ b/packages/eslint-plugin/src/rules/no-misused-promises.ts @@ -502,10 +502,10 @@ export default createRule({ if (objType == null) { return; } - const propertySymbol = checker.getPropertyOfType( - objType, - tsNode.name.text, - ); + const propertySymbol = tsutils + .unionConstituents(objType) + .map(t => checker.getPropertyOfType(t, tsNode.name.getText())) + .find(p => p); if (propertySymbol == null) { return; } diff --git a/packages/eslint-plugin/tests/rules/no-misused-promises.test.ts b/packages/eslint-plugin/tests/rules/no-misused-promises.test.ts index dc671e8869d6..fd908d416c08 100644 --- a/packages/eslint-plugin/tests/rules/no-misused-promises.test.ts +++ b/packages/eslint-plugin/tests/rules/no-misused-promises.test.ts @@ -2653,5 +2653,22 @@ const obj: O = { }, ], }, + { + code: ` +type A = { f: () => void } | undefined; +const a: A = { + async f() {}, +}; + `, + errors: [ + { + column: 3, + endColumn: 10, + endLine: 4, + line: 4, + messageId: 'voidReturnProperty', + }, + ], + }, ], });