redux中使用TS每次都要定義一遍類型?

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;
相關文章
相關標籤/搜索