我有一家商店。
export const useGameStore = defineStore("game", {
state: () => gameBaseState,
getters: {
foundMarkers(state): Marker[] {
return state.markers.filter((m) => m.found);
},
...
},
actions: {
closeAll() {...},
nextMissed() {...},
previousMissed() {...},
removeFlashId(id: string) {...},
guess(pos: Coord) {
...
if (this.foundMarkers.length >= this.toFind) {
this.setScore();
this.status = GameStatus.Passed;
}
},
},
});
在
guess()
操作和所有其他操作中找不到 getter 值。我明白了...
Property 'foundMarkers' does not exist on type '{ closeAll(): void; nextMissed():
void; previousMissed(): void; removeFlashId(id: string): void; flash(text: string,
type?: string, t?: number): void; loadLevel(levelIndex: any): void; ... 10 more ...;
guess(pos: Coord): void; } & { ...; } & _StoreWithState<...> & _StoreWithGetters<...>
& PiniaCustomProperties<...>'.
这基本上就是所有的动作。看起来它无法推断 getter 的类型(所有代码都运行良好,并且所有 getter 都可以正常访问)。
我错过了什么吗?
到目前为止,我已经确保输入了
foundMarkers
getter
foundMarkers(state): Marker[] {
^^^^^^^^
按照其他论坛的建议,但除此之外,我对如何正确格式化它有点迷失。
我还检查了操作本身的格式是否正确(我认为它们是正确的)。
答案: 确保每个 getter 都有一个返回类型,否则解析器将无法找到它们中的任何一个。
虽然从这样的答案中可以明显看出:
https://github.com/vuejs/pinia/discussions/1299
您需要输入回车:
totalDiscount(): number | undefined { return this.subTotal; },
解决方案是将返回类型添加到 getter,但我并不明显需要输入 EVERY getter 的返回值。肯定是第一个没有类型的 getter 导致所有后续 getter 失败。
我责怪我对打字稿缺乏理解/陌生。