es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Clases de valor / tipificación estricta en TypeScript.

¿Es posible definir clases de valor para tipos estrictos en TypeScript como se hace en Scala?

Los alias de tipo parecen ser ignorados por el “compilador” de 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) // También está bien. Me gustaría evitar este comportamiento

En Scala podemos usar clases de valor (además de una tipificación estricta, proporciona más ventajas):

scala
case class UserId(value: Int) extends AnyVal

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, TypeScript actualmente no admite el concepto de clases de valores como se hace en Scala. Aunque TypeScript tiene tipos estrictos, no brinda el mismo nivel de control sobre los tipos que Scala lo hace con las clases de valores. Por lo tanto, no hay una forma directa de evitar el comportamiento mostrado en el ejemplo anterior donde userId puede ser pasado como carId. Sin embargo, hay patrones de diseño y técnicas alternativas que se pueden utilizar para lograr resultados similares. Un patrón común es usar clases o funciones de envoltura que impongan una tipificación estricta y brinden validación o funcionalidad adicional según sea necesario.

Comments are closed.