2017-07-01 52 views
2

我正在尝试非常简单的例子从redux传奇页面。收益率传奇打字稿类型错误收益率全部

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

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

,但我得到的打字稿错误:

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...'. 

我做错了吗?感谢您的帮助

回答

1

由于链接的解决方案显然是得到downvoted,这是解决方案:

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

这不是我低调。无论如何,我也开始讨论github。这似乎是同意的解决方案。 https://github.com/redux-saga/redux-saga/issues/1044#issuecomment-312509142 – mauron85

0

在终极版,传奇库的例子大多采用这种形式:

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

例如见他们的real-world example。 我不确定当我们使用all时,使用fork而不是call的意思,因为那个帮手本身应该确保并行执行。