Saltar al contenido
TS2351

    ↑↓ mover · ⏎ abrir · esc cerrar

    TS2351

    La expresión no se puede construir

    This expression is not constructable.

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

    El valor después de `new` no tiene firma de constructor, así que no puede crear una instancia.

    Reproducción

    const value = {}
    
    new value()

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

    Por qué lo dice el compilador

    `new` requiere una clase o función constructora cuyo tipo describa la instancia creada. Un objeto ordinario ya es un valor; no es una receta para producir otro.

    Arreglos

    1. 01
      class Value {
        readonly ok = true
      }
      
      const value = new Value()

      Usa una clase cuando los llamantes deban construir instancias distintas.

    2. 02
      const makeValue = () => ({ ok: true })
      
      const value = makeValue()

      Usa una fábrica sin `new` cuando baste con un objeto normal.

    Conclusión

    Una firma de constructor describe lo que puede hacer `new`. Si el tipo no tiene ninguna, se importó el valor equivocado o `new` no corresponde ahí.

    Adónde ir después

    Errores