From cbeb27f8b22b31d9918ccaccda88b480ce2dd13c Mon Sep 17 00:00:00 2001 From: Jovi De Croock Date: Sat, 9 Nov 2024 07:57:58 +0100 Subject: [PATCH] Ensure we unwrap custom .then() --- compat/src/suspense.d.ts | 4 +++- compat/test/ts/suspense.tsx | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/compat/src/suspense.d.ts b/compat/src/suspense.d.ts index 9bd0e74e76..63f2d5400e 100644 --- a/compat/src/suspense.d.ts +++ b/compat/src/suspense.d.ts @@ -3,7 +3,9 @@ import { Component, ComponentChild, ComponentChildren } from '../../src'; // // Suspense/lazy // ----------------------------------- -export function lazy(loader: () => Promise<{ default: T } | T>): T; +export function lazy( + loader: () => Promise<{ default: T } | T> +): T extends { default: infer U } ? U : T; export interface SuspenseProps { children?: ComponentChildren; diff --git a/compat/test/ts/suspense.tsx b/compat/test/ts/suspense.tsx index 521e363c1a..c082f54663 100644 --- a/compat/test/ts/suspense.tsx +++ b/compat/test/ts/suspense.tsx @@ -50,3 +50,18 @@ function ReactSuspenseListTester(_props: any) { ); } + +const Comp = () =>

Hello world

; + +const importComponent = async () => { + return { MyComponent: Comp }; +}; + +const Lazy = React.lazy(() => + importComponent().then(mod => ({ default: mod.MyComponent })) +); + +// eslint-disable-next-line +function App() { + return ; +}