Is it possible to define value classes for strict types in TypeScript as it is done in Scala?
Type aliases seems to be ignored by TypeScript "compiler":
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
In Scala we can use value classes (besides strict typing it provides more advantages):
case class UserId(value: Int) extends AnyVal