- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
类型错误:this.pizzaPlaceEditService.currentPizzaPlace.getPoint 不是函数
我找到了TypeError: is not a function typescript class但我认为这不适用于这种情况。又发现了几个似乎不适用的。这是我编辑过的类(class):
export class PizzaPlace {
deliveryArea = [];
getPoint(seq: number): Point {
let result: Point = null;
this.deliveryArea.forEach(function(point:Point) {
if(seq == point.sequence) {
result = point;
}
});
return result;
}
}
这是我的工作单元测试:
it('should retrieve a point by sequence', () => {
var point1 = new Point();
point1.sequence = 0;
point1.latitude = 5.12;
point1.longitude = 5.12;
var point2 = new Point();
point2.sequence = 1;
point2.latitude = 6.13;
point2.longitude = 6.13;
var point3 = new Point();
point3.sequence = 2;
point3.latitude = 5.25;
point3.longitude = 5.25;
pizzaPlace.deliveryArea = [point1, point2, point3];
expect(pizzaPlace.getPoint(0)).toBe(point1);
expect(pizzaPlace.getPoint(1)).toBe(point2);
expect(pizzaPlace.getPoint(2)).toBe(point3);
expect(pizzaPlace.getPoint(3)).toBe(null);
});
这是生成错误的代码:
onDownClick(): void {
if(this.selectedPoint) {
let currSeq = this.selectedPoint.sequence;
let nextSeq = currSeq + 1;
console.log("Current pizza place:" + JSON.stringify(this.pizzaPlaceEditService.currentPizzaPlace));
console.log("nextSeq:" + nextSeq);
let next = this.pizzaPlaceEditService.currentPizzaPlace.getPoint(nextSeq);
if(next) {
this.pizzaPlaceEditService.currentPizzaPlace.swapPoints(this.selectedPoint, next);
}
}
}
这是错误:
Current pizza place:{"contactName":"Zaphod Beeblebrox","customerId":"TPGup2lt","deliveryArea":[{"errorMsg":"","sequence":0,"latitude":34.552,"longitude":-84.556},{"errorMsg":"","sequence":1,"latitude":34.711,"longitude":-84.665}],"deliveryZips":[],"paypalAccount":"HB17","settings":null,"shopName":"Donato's Hartland","shopStreet":"1531 Kenesaw Dr","shopCity":"Lexington","shopState":"KY","shopZip":"40515","shopPhone":"(859)555-2637","billStreet":"1531 Kenesaw Dr","billCity":"Lexington","billState":"KY","billZip":"40515","billPhone":"(859)555-2637"}
pizza-place-delivery.component.ts:63:6
nextSeq:1
pizza-place-delivery.component.ts:64:6
TypeError: this.pizzaPlaceEditService.currentPizzaPlace.getPoint is not a function
我已经没有什么可以尝试的了。任何建议表示赞赏!
最佳答案
感谢 Artem 的出色输入,我能够弄清楚问题是由于我从 JSON 创建对象而不是我想要的对象而引起的,因此它是不同的类型。显然,Typescript 中的类仅在编译时存在,并在运行时被丢弃。
因此,基于:How do I initialize a TypeScript object with a JSON object所选答案的选项4,我创建了一个serialized.ts。
export interface Serializable<T> {
deserialize(input: Object): T;
}
然后用实现修改我的类:
export class PizzaPlace implements Serializable<PizzaPlace> {
然后添加:
deserialize(input): PizzaPlace {
this.paypalAccount = input.paypalAccount;
this.customerId = input.customerId;
...
this.settings = input.settings;
return this;
}
然后,由于我的网络服务返回了这些数组,我更改了我的服务调用:
.subscribe(places => this.deserializePlaces(places));
并添加了一个新功能:
deserializePlaces(places: Object[]){
this.pizzaPlaces = [];
places.forEach(obj=> {
let place = new PizzaPlace().deserialize(obj);
this.pizzaPlaces.push(place);
});
}
这似乎工作得很好。感谢您的投入。
关于javascript - TypeError : . currentPizzaPlace.getPoint 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49163375/
我在 IDE 中运行一个程序,但是在 IDE 中运行它自己的 jar 文件,一旦我将其导出为可运行的 jar 文件(并使其成为一个 fat jar,添加库和 native 等),它给出以下错误: Ex
我们要创建一架飞机,每次用户输入向上键时,其速度会增加 5 英里/小时,而在按下向下键时,其速度会减少 9 英里/小时。假设无论哪个操作完成,它都会在输出框中将此报告给用户。如何设置以便按键监听器告诉
我在使用以下代码时遇到问题。我的目的是使用 getPoint 将鼠标单击的坐标存储到数组列表中,然后在用户单击的每个位置绘制一个矩形。我已经四处搜索如何从 getPoint 对象中单独提取 x 和 y
我已经开始研究多线程和点云处理。问题是我必须在现有的实现上实现多线程,并且有太多的读写操作,所以使用互斥体不能给我足够的性能加速,因为来自 grid 的读取操作太多了。 . 最后我以一种我可以拥有一个
类型错误:this.pizzaPlaceEditService.currentPizzaPlace.getPoint 不是函数 我找到了TypeError: is not a function typ
我有一个带有 Fabricjs 覆盖层的 Openseadragon Canvas 。我在用户点击 Canvas 的地方添加一个矩形。它在 MS Edge 和 Google Chrome 中工作正常,
我想将一个可渲染的小球体放置到点击已放置模型的位置,并将其锚定到该位置。这可以实现吗?如果可以,如何实现? private void tryPlaceModel(MotionEvent motionE
我正在尝试混淆我编写的游戏。我将其精简为一个非常基本的项目来说明问题(可以在此处找到该项目:https://github.com/dschneider/libgdx-proguard-test)。 您
我是一名优秀的程序员,十分优秀!