在TypeScript类中混合代码和属性



我有一个简单的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))

无论你发现什么更清晰的

最新更新