带单位的 typescript

9nvpjoqh  于 2022-12-27  发布在  TypeScript
关注(0)|答案(1)|浏览(142)

我正在重构一些处理CelsiusKelvin值的javascript函数,也涉及非热量值,但我将在本例中使用温度。
我想让typescript在这里记录一个警告。返回值fKelvin,它被传入一个显式接受Celsius值的参数。

type Celsius = number
type Kelvin = number

function f():Kelvin {
    return -220
}
function toKelvin(t:Celsius):Kelvin {
    return t - ABSOLUTE_ZERO
}
toKelvin(f())
cs7cruho

cs7cruho1#

Dominic给我指出了我要找的东西。

enum KelvinType { _ = 0 };
declare type Kelvin = number & KelvinType;
enum CelsiusType { _ = 1 };
declare type Celsius = number & CelsiusType;

function toCelsius(temp: Kelvin): Celsius {
    return temp + ABSOLUTE_ZERO
}
function toKelvin(temp: Celsius): Kelvin {
    return temp - ABSOLUTE_ZERO
}

function myFunc(temp: Celsius) {}
let value = 220;
let cTemp = toCelsius(value) // ok
let kTemp = toKelvin(value) // ok
toKelvin(kTemp) // nah
myFunc(kTemp) // nah
myFunc(cTemp) // ok

相关问题