打字稿,toFixed.类型'字符'不能指定为'数字'类型

Yor*_*ben 8 tofixed typescript angular

       distanceX = ((this.frontclickedX  - originX) / originX).toFixed(2);
       distanceY = (-(this.frontclickedY - originY) / originY).toFixed(2);
       let distanceZ: number = (-(this.frontclickedY - originY) / originY).toFixed(2);
Run Code Online (Sandbox Code Playgroud)

当我计算distanceZ时,我的浏览器抛出错误:

Type 'string' is not assignable to type 'number'.
Run Code Online (Sandbox Code Playgroud)

前两行完美运行,但第三行并不真正有效.正如您所看到的,它甚至与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);
}
Run Code Online (Sandbox Code Playgroud)

现在我得到了所有3行的错误.

Joh*_*ohn 19

该方法toFixed()将数字转换为字符串.您必须将变量解析为数字:

let distanceZ:number = parseFloat((-(this.frontclickedY - originY) / originY).toFixed(2));
Run Code Online (Sandbox Code Playgroud)

或者临时存储字符串,稍后再解析

let distanceZTxt:string = (-(this.frontclickedY - originY) / originY).toFixed(2);
let distanceZ:number = parseFloat(distanceZTxt);
Run Code Online (Sandbox Code Playgroud)