typescript - Cum pot genera dinamic tipuri pentru acțiunile Redux?


Încerc să creez acțiuni pentru Redux care să corespundă cu cererile de rețea. Deci, scopul meu este să am:

GET_USERS_STARTED
GET_USERS_COMPLETED
GET_USERS_ERRORED

ca posibile tipuri de acțiuni. În prezent, pot face asta cu:

export type reduxActions = typeof GET_USERS_STARTED | typeof GET_USERS_COMPLETED | typeof GET_USERS_ERRORED;

dar scopul meu este să folosesc puțină programare dinamică astfel încât să pot face ceva de genul:

function networkRequestable(str) {
  return [ `${str}_STARTED`, `${str}_COMPLETED`, `${str}_ERRORED`];
}

export type reduxActions = networkRequestable(GET_USERS)

Și apoi componentele, reducerii etc. ar putea să se bazeze pe semnătura lui GET_USERS_STARTED, etc. fără a scrie manual tipurile pentru fiecare acțiune API care s-ar putea întâmpla.

M-am uitat la Interfețe și Verificări Personalizate de Securitate, dar cred că Interfețele sunt prea „deschise”, în timp ce verificările de securitate sunt doar la runtime pentru a forța tipurile existente.

Nu sunt sigur dacă există o modalitate de a face asta sau dacă doar mă gândesc la TypeScript greșit. Mulțumesc pentru orice îndrumare!