2017-07-01 1 views
2

J'essaye un exemple très simple de la page redux-saga.Redux saga typecript erreur de type en rendement tous

function* saga(): SagaIterator { 
    yield takeEvery(T.GET_CREDENTIALS, getCredentials); 
} 

export default function* rootSaga() { 
    yield all([ 
    saga(), 
    ]); 
} 

Mais j'obtiens l'erreur tapuscrit:

Argument of type 'IterableIterator<RootEffect | TakeEffect | 
ChannelTakeEffect<any> | PutEffect<any> | ChannelPutEf...' is not 
assignable to parameter of type '{ [key: string]: Effect; }'. 
Index signature is missing in type 'IterableIterator<RootEffect | 
TakeEffect | ChannelTakeEffect<any> | PutEffect<any> | 
ChannelPutEf...'. 

Ce que je fais mal? Merci pour l'aide

Répondre

1

Depuis des liens vers des solutions se downvoted apparemment, c'est la solution:

export default function* rootSaga() { 
    yield all([ 
    call(saga()), 
    ]); 
} 
+0

Ce n'était pas moi qui l'ai déprécié. Quoi qu'il en soit, j'ai également commencé à discuter sur github. Et il semble être une solution convenue. https://github.com/redux-saga/redux-saga/issues/1044#issuecomment-312509142 – mauron85

0

Les exemples dans le référentiel Redux-saga utilisent principalement cette forme:

export default function* rootSaga() { 
    yield all([ 
     fork(saga1), 
     fork(saga2), 
     // ... 
    ]) 
} 

Voir par exemple leur real-world example. Je ne suis pas sûr de ce que le point est d'utiliser fork au lieu de call lorsque nous utilisons all autour de lui, car cet assistant seul devrait assurer une exécution en parallèle.