打字稿,固定。类型 'string' 不可分配给类型 'number'
Typescript, toFixed. Type 'string' is not assignable to type 'number'
distanceX = ((this.frontclickedX - originX) / originX).toFixed(2);
distanceY = (-(this.frontclickedY - originY) / originY).toFixed(2);
let distanceZ: number = (-(this.frontclickedY - originY) / originY).toFixed(2);
我的浏览器在计算距离 Z 时抛出错误:
Type 'string' is not assignable to type 'number'.
前两行工作得很好,但第三行不工作。
如您所见,它甚至与 distanceY 的计算完全相同。我试着先 parseFloat() 它。但是后来它开始抱怨我只能将字符串解析为浮点数,而我没有提供。
我现在很困惑,所以非常感谢您的帮助或解决方案!
提前致谢!
编辑:我试图简化我的代码。
将距离设为私有并添加 setter 和 getter。
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 行上都遇到了错误。
方法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);
你可以这样写你的函数来避免这个问题
get distanceZ(): number | string {
return this._distanceZ;
}
在您的函数中添加“| string”
试试这个
((this.frontclickedX - originX) / originX).toFixed(2) as any
distanceX = ((this.frontclickedX - originX) / originX).toFixed(2);
distanceY = (-(this.frontclickedY - originY) / originY).toFixed(2);
let distanceZ: number = (-(this.frontclickedY - originY) / originY).toFixed(2);
我的浏览器在计算距离 Z 时抛出错误:
Type 'string' is not assignable to type 'number'.
前两行工作得很好,但第三行不工作。 如您所见,它甚至与 distanceY 的计算完全相同。我试着先 parseFloat() 它。但是后来它开始抱怨我只能将字符串解析为浮点数,而我没有提供。
我现在很困惑,所以非常感谢您的帮助或解决方案!
提前致谢!
编辑:我试图简化我的代码。 将距离设为私有并添加 setter 和 getter。
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 行上都遇到了错误。
方法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);
你可以这样写你的函数来避免这个问题
get distanceZ(): number | string {
return this._distanceZ;
}
在您的函数中添加“| string”
试试这个
((this.frontclickedX - originX) / originX).toFixed(2) as any