Я использую React с Redux и Typescript и получаю странную ошибку, которую не знаю, как решить?
Экспортированная переменная 'rootReducer' имеет или использует имя 'ITransactionAddAction' из внешнего модуля "/ Пользователи / lony / рабочий стол / жилет / реагировать на портфель акций / src / store / account / types ", но не могут быть названы .ts (4023)
Именованный ITransactionAddAction
определен внутри учетной записи / типы, которые можно увидеть ниже и указывающие редуктор для добавления транзакции в хранилище учетной записи.
rootReducer.ts
store.ts
У меня есть две учетные записи и портфель «резервных хранилищ», и оба структурированы одинаково, каждый из которых содержит один редуктор и один тип файлов.
В качестве примера приведу один раз код учетной записи:
учет / типы
// Data
export interface ITransaction {
isin: string;
order_action?: string;
quantity: number;
price: number;
cost: number;
order_datetime: Date;
valuta_datetime?: Date;
}
export type ITransactionArray = Array<ITransaction>;
export interface IAccount {
transactions: ITransactionArray;
}
// Action
export const TRANSACTION_ADD = "TRANSACTION_ADD";
export const TRANSACTION_DELETE = "TRANSACTION_DELETE";
export const TRANSACTION_UPDATE = "TRANSACTION_UPDATE";
interface ITransactionAddAction {
type: typeof TRANSACTION_ADD;
payload: ITransaction;
}
interface ITransactionDeleteAction {
type: typeof TRANSACTION_DELETE;
payload: ITransaction;
}
interface ITransactionUpdateAction {
type: typeof TRANSACTION_UPDATE;
payload: ITransaction;
}
export type TransactionActionTypes =
| ITransactionAddAction
| ITransactionDeleteAction
| ITransactionUpdateAction;
учет / редуктор
import {
IAccount,
TRANSACTION_ADD,
TRANSACTION_DELETE,
TRANSACTION_UPDATE,
TransactionActionTypes,
} from "./types";
const initialState: IAccount = { transactions: [] };
const accountReducer = (
state = initialState,
action: TransactionActionTypes
): IAccount => {
switch (action.type) {
case TRANSACTION_ADD:
return {
...state,
transactions: state.transactions.concat(action.payload),
};
case TRANSACTION_DELETE:
return {
...state,
transactions: state.transactions.filter(
(item) => item.isin !== action.payload.isin
),
};
case TRANSACTION_UPDATE:
const data = state.transactions.map((item) => {
if (item.isin === action.payload.isin) {
return action.payload;
} else {
return item;
}
});
return {
...state,
transactions: data,
};
default:
return state;
}
};
export default accountReducer;