✅ Vuexを直接importして、型をつけて使う。
✅ computed()
でstate/getterを参照。
✅ store.dispatch
でactionを実行。
✅ store自体に型をつける!
// ファイル名: src/types/store.ts
// ルート情報の型定義
export interface RouteInfo {
name: string;
path: string;
}
// sampleModuleのState型定義
//**currentRoute: RouteInfo は、オブジェクト型** { name: string; path: string }
export interface SampleModuleState {
text: string;
currentRoute: RouteInfo;
}
// ストア全体の型定義
export interface RootState {
sampleModule: SampleModuleState;
}
これを具体的なオブジェクトに変換すると?
typescript
コピーする編集する
// ファイル名: src/example/rootStateExample.ts
// 具体的なRootStateオブジェクト
const rootStateExample: RootState = {
sampleModule: {
text: "サンプルテキスト",
currentRoute: {
name: "home",
path: "/home"
}
}
};
// ファイル名: src/store/index.ts
import Vue from 'vue';
import Vuex, { Store } from 'vuex';
import SampleModule from './modules/sampleModule';
import { RootState } from '@/types/store';
Vue.use(Vuex);
// RootState型を明示する(Vuexストア全体の設計図を RootState 型に合わせて作っています。)
const store = new Vuex.Store<RootState>({
// モジュールとしてsampleModuleを登録。
modules: {
sampleModule: SampleModule,
},
});
export default store;
ストアは「sampleModuleという名前のモジュール」を持つ構造になり、
そのモジュールの中に、textとcurrentRouteを持つ、というルールです。