我目前在Vue.js应用程序中有一个类似于下面的对象,我试图将其移植到TypeScript中。注意此对象的结构由Vuex library决定:TypeScript中的自引用类型
const getters = {
allUsers(state) {
return state.users;
},
firstUser(_state, getters) {
return getters.allUsers()[0]
}
}
如何我这里干将提供相应类型firstUser
?
const getters = {
allUsers(state: State) {
return state.users;
},
firstUser(_state: State, getters: typeof getters) {
return getters.allUsers()[0]
}
}
目前我得到以下错误:
[ts] 'getters' is referenced directly or indirectly in its own type annotation.
更新:@basarat确定你可以作出这样的错误,通过重命名参数消失。
const getters = {
allUsers(state: State) {
return state.users;
},
firstUser(_state: State, theGetters: typeof getters) {
return theGetters.allUsers()[0]
}
}
然而,typeof getters
最终被any
而非getters
对象的类型。
这就是我正在使用的库如何定义获取者。 – fny