ExtendedElements<ClusterT, ComponentT>: [ComponentT] extends [never]
    ? never
    : {
        [TypeT in ElementType]: Pick<ClusterT[TypeT], keyof ClusterT[TypeT] & (keyof BaseOf<ClusterT>[TypeT] | keyof ComponentT[TypeT])> & Omit<ComponentT[TypeT], keyof ClusterT[TypeT]> & Omit<BaseOf<ClusterT>[TypeT], keyof ClusterT[TypeT] | keyof ComponentT[TypeT]>
    }

Cluster elements extended with .

Note that we have to track the base separate from the originating cluster. If we are removing features, we want to maintain only those features present in the base or selected components.

Type Parameters