umi架構下:ts項目中redux定義module每次都要寫一遍類型定義麻煩得很redux
typing文件夾下建立Redux.d.ts聲明文件架構
import type { Effect, Subscription, ImmerReducer } from 'umi'; declare module MyRedux { // model type Models<T> = { namespace?: string; state: T; effects: Record<string, Effect>; reducers: Record<string, ImmerReducer<T>>; subscriptions?: Record<string, Subscription>; }; } // 導出成模塊,再全局導出MyRedux,這樣使用就不用再import type { Redux } from '@/typings/redux'; 了 export = MyRedux; // 因爲使用了import,此文件變成局部模塊,其餘地方使用只能import導入(import type { Redux } from '@/typings/redux';)才能使用 export as namespace MyRedux;
如何使用
models文件夾下建立staff.tsspa
type StaffSettingState = { staff: Record<string, never>; }; const StaffSettingsModel: MyRedux.Models<StaffSettingState> = { namespace: 'staffSettingsModel', state: { staff: {} }, effects: {}, reducers: {}, }; export default StaffSettingsModel;