ค้นหาเว็บไซต์

การใช้ 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