0

是否可以像在 Scala 中那样在 TypeScript 中为严格类型定义值类?

TypeScript“编译器”似乎忽略了类型别名:

export type UserId = number;
export type CarId  = number;

const userId: UserId = 1

const findUser = (userId: UserId) => { ... }
findUser(userId) // OK

const findCar  = (carId: CarId) => { ... }
findCar(userId) // OK too! I would like to prevent such behavior

在 Scala 中,我们可以使用值类(除了严格类型之外,它还提供更多优势):

case class UserId(value: Int) extends AnyVal
4

1 回答 1

0

不,这在 TypeScript 中是不可能的。TS 使用结构子类型(也称为鸭子类型),这意味着任何看起来足够像给定类型的东西都将被接受为该类型。

在您的情况下,两者UserIDCarID都只是数字结构,因此可以互换使用。

于 2021-12-09T15:12:16.610 回答