distanceX = ((this.frontclickedX - originX) / originX).toFixed(2);
distanceY = (-(this.frontclickedY - originY) / originY).toFixed(2);
let distanceZ: number = (-(this.frontclickedY - originY) / originY).toFixed(2);
当我计算distanceZ:
时,我的浏览器会抛出错误Type 'string' is not assignable to type 'number'.
前两行完美无缺,但第三行并不真正有效。 正如您所看到的,它甚至与distanceY完全相同。我试图首先解析Flos()。但后来它开始抱怨我只能将一个字符串解析为浮点数,并且我没有提供一个字符串。
此刻我很困惑,所以非常感谢一些帮助或解决方案!
提前致谢!
编辑:我试图简化我的代码。 使距离变得私密,并增加了制定者和吸气剂。
private _distanceX: number;
private _distanceY: number;
private _distanceZ: number;
get distanceZ(): number {
return this._distanceZ;
}
set distanceZ(value: number) {
this._distanceZ = value;
} ...
calculateBadgeDistance(): void{
this.distanceX = (5.001).toFixed(2);
this.distanceY = (5.001).toFixed(2);
this.distanceZ = (5.001).toFixed(2);
}
现在我收到了所有3行的错误。
答案 0 :(得分:12)
方法toFixed()
将数字转换为字符串。
您必须将变量解析为数字:
let distanceZ:number = parseFloat((-(this.frontclickedY - originY) / originY).toFixed(2));
或者临时存储字符串,稍后再解析
let distanceZTxt:string = (-(this.frontclickedY - originY) / originY).toFixed(2);
let distanceZ:number = parseFloat(distanceZTxt);
答案 1 :(得分:0)
您可以像这样编写函数来避免此问题
get distanceZ(): number | string {
return this._distanceZ;
}
在函数中添加“ |字符串”
答案 2 :(得分:0)
尝试一下
((this.frontclickedX - originX) / originX).toFixed(2) as any