使用< {[key:string]:Thread}>键入错误

时间:2017-08-21 10:12:05

标签: angular typescript

我正在尝试将 Thread 对象添加到我的变量 threads

这是我意识到的:

export class ThreadService {
   newThreads: Thread[];
   threads: Observable<{ [key: string]: Thread }>;
}

addThread(keyThread: string, newThread: Thread): void {
   this.threadService.newThreads.push(newThread);
   this.threadService.threads = Observable.of({[keyThread]: newThread});
}

你知道为什么它不起作用吗?

1 个答案:

答案 0 :(得分:1)

这实际上与RxJS无关,你有混合类型。您在ThreadService中将Observable<{ [key: string]: Thread }> 定义为:

{
    a: thread1 as Thread,
    b: thread2 as Thread,
}

这意味着您有一个Observable可以发出例如以下对象:

Observable.of(this.threadService.newThreads)

但是,您尝试使用newThreads分配不同的内容。

Thread[]属性属于{ [key: string]: Thread }类型,无法分配给current = [ {'name' : 'food festival', 'category' : ['Miscellaneous', 'Undefined'], 'venue' : 'venue_1', 'price_1' : 100, 'price_2' : 120, 'start' : '2017-10-04T14:30:00Z'}, {'name' : 'food festival', 'category' : ['Miscellaneous', 'Undefined'], 'venue' : 'venue_2', 'price_1' : 150, 'price_2' : 200, 'start' : '2017-11-04T14:30:00Z'}, {'name' : 'music festival', 'category': ['music', 'pop'], 'venue' : 'venue_3', 'price_1' : 300, 'price_2' : 320, 'start' : '2017-12-04T14:30:00Z'} ]