2017-07-01 65 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的意思,因爲那個幫手本身應該確保並行執行。