Я использую наблюдаемую избыточность, и у меня есть ошибка Typescript, которую я не могу понять, и она кажется случайной, если у меня слишком много строк кода в конвейере rxjs:
Type 'Observable<{}>' is not assignable to type 'Observable<{ type: "feed/PUSH"; payload: Profile; } | { type: "feed/POP"; } | { type: "feed/SWIPE"; payload: Swipe; } | { type: "feed/FETCH_NEXT_IDS"; } | { type: "feed/PUSH_NEXT_IDS"; payload: { nextIds: string[]; nextPage: number; }; } | { ...; } | { ...; } | { ...; }>'.
Type '{}' is not assignable to type '{ type: "feed/PUSH"; payload: Profile; } | { type: "feed/POP"; } | { type: "feed/SWIPE"; payload: Swipe; } | { type: "feed/FETCH_NEXT_IDS"; } | { type: "feed/PUSH_NEXT_IDS"; payload: { nextIds: string[]; nextPage: number; }; } | { ...; } | { ...; } | { ...; }'.
Property 'type' is missing in type '{}' but required in type '{ type: "feed/FETCH_NEXT_PROFILE"; }'.ts(2322)
action.d.ts(36, 5): 'type' is declared here.
index.d.ts(36, 26): The expected type comes from the return type of this signature.
Вот код, в котором есть ошибка. Я добавил много tap
функций в конвейер, чтобы показать тот факт, что ошибка появляется только тогда, когда у меня слишком много tap
. Если я удаляю определенное число tap
, ошибка, похоже, исчезает.
export const swipeEpic: Epic<RootAction, RootAction, RootState> = action$ =>
action$.pipe(
filter(isOfType(SWIPE)),
tap(nextIds => {
console.log('fetch new ids result :');
console.log(nextIds);
}),
tap(nextIds => {
console.log('fetch new ids result :');
console.log(nextIds);
}),
tap(nextIds => {
console.log('fetch new ids result :');
console.log(nextIds);
}),
tap(nextIds => {
console.log('fetch new ids result :');
console.log(nextIds);
}),
tap(nextIds => {
console.log('fetch new ids result :');
console.log(nextIds);
}),
tap(nextIds => {
console.log('fetch new ids result :');
console.log(nextIds);
}),
tap(nextIds => {
console.log('fetch new ids result :');
console.log(nextIds);
}),
tap(nextIds => {
console.log('fetch new ids result :');
console.log(nextIds);
}),
map(pop)
// map(fetchNextProfile)
);