import React, { ComponentType, ReactNode } from "react"; type Provider = ComponentType<{ children: ReactNode }>; export const buildProvidersTree = (providers: Provider[]): Provider => { if (!providers || providers.length === 0) { throw new Error("ContextProviderが不足しています"); } // 基本ケース:ContextProviderが1つしか残っていない場合、それを返して終了する if (providers.length === 1) { return providers[0]; } // 配列から最初の2つのContextProviderを取り出す const [FirstProvider, SecondProvider, ...restProviders] = providers; // 最初の2つのContextProviderをネストした新しいContextProviderを作成し、再帰する const CombinedProvider: Provider = ({ children }) => ( {children} ); return buildProvidersTree([CombinedProvider, ...restProviders]); };