我想要做的是在我的承諾中返回ReadonlyArray <>,這樣我就可以將它返回到調用'dispatchToThisProcess'的原始方法,我之所以要抽象狀態更新,是因爲我可以更改它以在將來更新多個進程。貝婁是我的代碼:TS2345:類型'Promise <ReadonlyArray <Object>>'的參數不能分配給類型爲'T | PromiseLike <T> | undefined'
private dispatchToThisProcess<T extends object>(action: Action): Promise<T> {
return this.updateState(action.name, action)
}
// to be called by the dispatchToThisProcess
private updateState<T extends object> (name: string, args: any): Promise<T> {
return new Promise<T>((resolve, reject) => {
console.log('In updateState, this replaced the send<T>(...) method')
switch (name) {
case 'add-repositories': {
const addedRepos: ReadonlyArray<Repository> = new Array<Repository>()
for (const path of args) {
const addedRepo: any = Promise
.resolve(this.repositoriesStore.addRepository(path))
.then(result => addedRepo)
addedRepos.join(addedRepo)
}
const returned = Promise.resolve(addedRepos)
resolve(returned)
break;
}
default: {
reject()
break;
}
}
})
}
這裏是我的錯誤:我看它
error TS2345: Argument of type 'Promise<ReadonlyArray<Repository>>' is not assignable to parameter of type 'T | PromiseLike<T> | undefined'.
Type 'Promise<ReadonlyArray<Repository>>' is not assignable to type 'PromiseLike<T>'.
Types of property 'then' are incompatible.
Type '<TResult1 = ReadonlyArray<Repository>, TResult2 = never>(onfulfilled?: ((value: ReadonlyArray<Rep...' is not assignable to type '<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) |...'.
Types of parameters 'onfulfilled' and 'onfulfilled' are incompatible.
Types of parameters 'value' and 'value' are incompatible.
Type 'ReadonlyArray<Repository>' is not assignable to type 'T'.
,有人說加是t擴展對象,但沒有我的情況下,幫幫忙,我做不知道該從哪裏出發。我正在使用TypeScript 2.4.0。
你用什麼T? – libertyernie
類型Repository的ReadonlyArray。存儲庫是一個對象。 –