typescript reselect createSelector No overload matches this call OutputSelector ParametricSelector

No overload matches this call.
The last overload gave the following error.
Type 'OutputSelector string>' is not assignable to type 'ParametricSelector'.
Type 'string' is not assignable to type 'boolean'.ts(2769),

Возможная причина

Это интересно, но причина ( в нашем случае на момент написания данной заметки) в том, что использовалось более 12 селекторов, что не соответствует описаниям типов сигнуры функции createSelector() (см. опреление типов для createSelector() в исходном коде reselect)

ПРИМЕЧАНИЕ: использовать более 12 селекторов можно, если все они возвращают один и тот же тип данных.

Демонстрация ошибки

Пример кода:

import { createSelector } from '@reduxjs/toolkit';

type UserInfo = {
    name: string,
    active: boolean
    items: string[]
}

type RootState = {
    user: UserInfo
}

export const initialState: UserInfo = {
     name: '',
     items: [],
     active: true
  };

const selectDomain = (state: RootState) => state?.user || initialState;
const selectUserName = createSelector([selectDomain], ({ name }) => name);
const selectIsActive = createSelector([selectDomain], ({ active }) => active);

const selectDemo1 = createSelector([selectDomain], ({ name }) => name);


const selectUserInfo = createSelector([selectUserName, 
    selectIsActive,  
    selectDemo1, 
    selectDemo1,
    selectDemo1,
    selectDemo1,
    selectDemo1,
    selectDemo1,
    selectDemo1,
    selectDemo1,
    selectDemo1,
    selectDemo1,
    selectDemo1, ],
     (name, active ) => `${name} ${active}`);


Решение

В данный момент решение является перекобинация селекторов, так чтобы конкретный селектор не зависел более чем от 12 своих "товарищей"))
Какие есть варианты (два, в целом это та же перегруппировка):

  1. Спускать текущему комноненту "лишние" данные как пропсы из вышестоящего компонента-обертки
  2. Попытаться завернуть "лишние" селекторы в более общий селектор, так чтобы число входных селекторов уменьшилось за счет группировки