การใช้ RxJS Scan ใน Typescript กับประเภทที่แตกต่างกันสำหรับตัวสะสมและค่าที่อัปเดต
กำลังพยายามใช้ RxJS กับประเภทที่แตกต่างกันสำหรับ "อินพุตและเอาต์พุต" :
a$: Subject<Request>;
b$: Observable<Pair[]>;
เมื่อฉันส่งคำขอ คำขอนั้นจะถูกประมวลผลในฟังก์ชัน scan และถูกเพิ่มไปยังตัวสะสม:
this.b$ = this.a$.pipe(
startWith([]),
scan(this.accumulator),
shareReplay(),
);
accumulator(acc: Pair[], modification: Request): Pair[] {
// .... process request and add the pair derived from request to acc
return acc
}
แต่ TypeScript ก็เริ่มบ่นทันทีเกี่ยวกับตัวสะสมที่ไม่สามารถใช้กับประเภทที่กำหนดได้ และมันก็ทำงานได้เพียงแค่ตั้งค่า modification: any ซึ่งก็เหมือนกับว่าไม่ได้เขียน TypeScript เลย
ฉันกำลังเข้าใจผิดบางอย่างเกี่ยวกับ Rx รึเปล่า? รูปแบบนี้เคยใช้ได้ผลกับฉันมาก่อน เมื่อฉันไปถึงเวลารันไทม์
คำตอบ #1
ไม่ทราบว่าคุณเจอคำตอบหรือยัง แต่ทั้งหมดที่คุณต้องทำคือแยกคำนิยามของเรื่องและผู้สังเกต:
https://stackblitz.com/edit/typescript-rxjs-scan