我有一个简单的TypeScript类定义如下:
export class Piece {
Qty: number;
Weight: number;
Type: string;
totalWeight() {
return Qty * Weight;
}
}
我有一个Angular 5服务,它有一个这样的方法:
get(id: number) {
return this.http.get<Piece>(myAPIURL + id);
}
我的Angular代码如下所示:
const myPiece: Piece;
this.myService.get(2).subscribe(data => myPiece = data);
当一切都说了算,变量"myPiece"包含正确的数据;但是,它没有附加totalWeight((方法。我想我理解为什么(因为服务器返回了数据/属性,但显然没有代码(。但是,有没有办法以某种方式再次将数据和代码/方法结合起来?
我的背景是C#对象,而且我还是Java/TypeScript的新手。我猜这可能与JavaScript中的原型继承有关?
有什么帮助吗?
您需要从http调用实际实例化类。TypeScript只是带有类型提示的javascript,不能进行实际的强制转换,因为javascript没有这一点。因此,要使某个类成为特定的类,您必须使用new
关键字来实例化它
get(id: number) {
return this.http.get<Piece>(myAPIURL + id).pipe(
map((data) => ({ ...new Piece(), ...data}))
)
}
或
map((data) => Object.assign(new Piece(), data))
无论你发现什么更清晰的