Saltar al contenido
TS2693

    ↑↓ mover · ⏎ abrir · esc cerrar

    TS2693

    Tipo usado como valor en ejecución

    'User' only refers to a type, but is being used as a value here.

    Las palabras del propio compilador. Sin traducir — es la cadena que pegaste en el buscador.

    Se hizo referencia a un alias en el espacio de valores, pero los alias se borran del JavaScript emitido.

    Reproducción

    type User = { id: string }
    
    const Ctor = User

    La compilación afirma que esto emite exactamente este código.

    Por qué lo dice el compilador

    TypeScript tiene espacios paralelos de tipos y valores. Las declaraciones `type` e `interface` solo existen durante la comprobación; el código ejecutable necesita una clase, función, objeto u otro valor real de JavaScript.

    Arreglos

    1. 01
      type User = { id: string }
      
      const user: User = { id: 'u1' }

      Usa el alias en una posición de tipo y proporciona por separado un valor real.

    2. 02
      class User {
        constructor(readonly id: string) {}
      }
      
      const user = new User('u1')

      Usa una clase cuando un nombre deba describir tanto instancias como un constructor en ejecución.

    Conclusión

    Pregúntate si la posición actual sobrevive en JavaScript. Si es así, una declaración solo de tipo no puede ocuparla.

    Adónde ir después

    Errores