У меня есть 3 типа:
export type FooInitialStateType = {
Id: string;
Name: string;
Email: string;
Password: string
};
export type BarInitialStateType = {
Id: string;
Balance: number;
};
export type BazInitialStateType = {
Id: string;
Limit: number;
};
. Затем я создаю тип объединения следующим образом:
export type FooBarBazType = FooInitialStateType | BarInitialStateType | BazInitialStateType
Затем у меня есть метод generi c, который обрабатывает массивы, содержащие все 3 выше Типы:
getFooBarBaz (
events: FooBarBazType[]
): {
foobarbaz0: FooBarBazType;
} {
const foobarbaz0 = <FooBarBazType>events[0];
return {
foobarbaz0
};
}
Затем я вызываю этот метод generi c для каждого класса (foo, bar, baz):
const {
foobarbaz0
}: {
foobarbaz0: FooInitialStateType;
} = this.getFooBarBaz(fooEvents);
Я получаю ошибку TS:
Тип 'FooBarBazType' нельзя назначить типу 'FooInitialStateType'.
Поскольку FooInitialStateType
не содержит свойств BarInitialStateType
и BazInitialStateType
.
Актуальные вопросы:
Как я могу использовать тип объединения для метода generi c, чтобы принимать массив со всеми 3 типами, но затем, когда я вызываю метод, укажите какой точный тип возвращаемого значения должен быть?
Является ли тип объединения правильной вещью для использования здесь? У меня есть один метод, который принимает 3 разных типов и производит один тип. Мне нужно, чтобы вызывающая функция знала и указывала возвращаемый тип