我通过HTTPClient将对象转换为Observable
,因此我的getTasks()
函数返回Observable<Task[]>
。
this.taskList = this.taskService.getTasks()
.pipe(
map( list =>
list.filter(t => console.log(t))
)
);
如果我记录每个Task
,我会注意到这些对象不是真正的Task
个对象,就像我用构造函数构建它们一样:他们没有我在课堂上定义的getter函数。
这是预期的行为吗?
如果是这样,我是否必须使用map
运算符构建每个对象?
答案 0 :(得分:0)
是的,Observable<Task[]>
只是TypeScript的类型保护。当编译为JavaScript时,这意味着什么,您的响应只是一个简单的JavaScript对象,可能来自JSON.parse
。
例如,您可以根据Task
的内容执行这些操作。
this.taskList = this.taskService.getTasks()
.pipe(
map(list => list.map(task => new Task(task))),
);
或使用Object.assign
:
this.taskList = this.taskService.getTasks()
.pipe(
map(list => list.map(task => Object.assign(new Task(), task))),
);