如何在打字稿字符串插值中格式化数字?

How to format a number in a typescript string interpolation?

我有一个 angular 管道,如果距离大于给定数量,它应该进行一些基本转换以显示以千米为单位的距离。

export class DistancePipe implements PipeTransform {

  transform(value: number, ...args: unknown[]): unknown {
    if(value>1000){
      return `${(value/1000):d2} km`;//<--- This won't compile
    }else{
      return `${value} m`;
    }
  }

}

但我很难显示以公里为单位的距离。

目标是具有以下行为:

1141 -> 1.1
501 -> 501
1011 -> 1
2091 -> 2.1
1990 -> 2
999-> 999

我尝试使用 ToFixed,但它会强制显示 1.00,这对我来说是不可接受的。这似乎很疯狂,我不能做像格式这样简单的事情

Number 的额外转换会删除 .0。顺便说一句,1151/1000 恕我直言(四舍五入)是 1.2,而不是 1.1。

const formatNr = nr => nr > 1000 ? +((nr/1000).toFixed(1)) : nr;
//                                 ∟ here
const numbers = [1151, 501, 1011, 2091, 1990, 999]; 
console.log(numbers.map(nr => `${nr} -> ${formatNr(nr)}`));